vue2组件库:表格数据展示通用页面

这篇具有很好参考价值的文章主要介绍了vue2组件库:表格数据展示通用页面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue2组件库:表格数据展示通用页面,vue,vue.js,elementui,前端文章来源地址https://www.toymoban.com/news/detail-669130.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- import CSS -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <!-- import Vue before Element -->
  <script src="https://unpkg.com/vue@2/dist/vue.js"></script>
  <!-- import JavaScript -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
  <div id="app">
    <div class="app-container">
      <div style="width: 100%; height: 60px">
        <div style="float: left; line-height:60px; width: 500px;">
          <!-- 查询 -->
          <el-form :model="queryParams"
                   ref="queryForm"
                   :inline="true">
            <el-form-item label="项目名称:"
                          prop="name">
              <div style="line-height:60px;">
                <el-input v-model="queryParams.search"
                          placeholder="请输入关键字"
                          clearable
                          size="small"
                          @keyup.enter.native="handleQuery" />
              </div>
            </el-form-item>
            <el-form-item>
              <div style="line-height:60px;">
                <el-button type="primary"
                           icon="el-icon-search"
                           size="mini"
                           @click="handleQuery">搜索</el-button>
                <el-button icon="el-icon-refresh"
                           size="mini"
                           @click="resetQuery">重置</el-button>
              </div>
            </el-form-item>
          </el-form>
        </div>
        <div style="float: right; line-height:60px; width: 100px;">
          <el-button type="primary"
                     size="mini"
                     @click="handleAddProjectButton">新建项目</el-button>
        </div>
      </div>
      <div>
        <!-- 新增弹窗 -->
        <el-dialog :title="projectDialogParams.title"
                   :visible.sync="projectDialogParams.visible"
                   width="50%">
          <el-form :model="projectDialogParams"
                   label-width="auto">
            <el-form-item label="项目名称"
                          :rules="{ required: true, message: '不能为空' }">
              <el-input placeholder="请输入项目名称"
                        v-model="projectDialogParams.projectName"></el-input>
            </el-form-item>
            <el-form-item label="项目描述">
              <el-input type="textarea"
                        :rows="5"
                        placeholder="请输入项目描述"
                        v-model="projectDialogParams.projectDescription"></el-input>
            </el-form-item>
          </el-form>
          <div slot="footer"
               class="dialog-footer">
            <el-button @click="projectDialogParams.visible = false">取 消</el-button>
            <el-button type="primary"
                       @click="handleSubmitButton">确定</el-button>
          </div>
        </el-dialog>
      </div>
      <!-- 列表 -->
      <div>
        <el-table v-loading="tableData.loading"
                  :data="tableData.List"
                  size="medium"
                  border
                  stripe
                  fit
                  height="350"
                  highlight-current-row
                  tooltip-effect="light"
                  :header-cell-style="{ textAlign: 'center' }"
                  :cell-style="{ textAlign: 'center' }">
          <el-table-column label="序号"
                           type="index"
                           :index="indexMethod"
                           width="50">
          </el-table-column>
          <el-table-column prop="name"
                           label="项目名称"
                           show-overflow-tooltip></el-table-column>
          <el-table-column prop="description"
                           label="项目描述"
                           show-overflow-tooltip></el-table-column>
          <el-table-column fixed="right" label="操作" width="160">
            <template slot-scope="scope">
              <el-row>
                  <el-col :span="12">
                    <!-- 传入表格当前行的索引, 然后通过 this.tableData.list[index].id 获取当前行数据 -->
                    <!-- <el-button type="text" size="small" @click="handleEdit(scope.$index)">编辑</el-button>      -->
                    <!-- 传入表格当前行的数据值 -->
                    <el-button type="text" size="small" @click="handleEdit(scope.row.id)">编辑</el-button>   
                  </el-col>
                  <el-col :span="12">
                  <el-popover         
                      placement="top"         
                      :ref="`popover-delete-${scope.$index}`">         
                      <p>确定删除?</p>         
                      <div style="text-align: right; margin: 0">         
                      <el-button style="padding: 2px;" size="small" type="text" @click="deleteCancelButton(scope.$index)">取消</el-button>         
                      <el-button style="padding: 2px;" type="primary" size="small" @click="handleDelete(scope.$index)">确定</el-button>         
                      </div>         
                      <el-button slot="reference" type="text" size="small">删除</el-button>         
                  </el-popover>  
                  </el-col>
              </el-row>
              </template>
          </el-table-column>
        </el-table>
      </div>
      <div style="height: 400px; width: 100%">
        <div style="text-align: center">
          <el-pagination layout="total, sizes, prev, pager, next, jumper"
                         background
                         @size-change="changeSize"
                         @current-change="changePage"
                         :current-page="queryParams.pageNum"
                         :page-size="queryParams.pageSize"
                         :total="tableData.total">
          </el-pagination>
        </div>
      </div>
    </div>
  </div>
</body>
  <script>
    new Vue({
      el: '#app',
      data () {
        return {
          // 查询参数
          queryParams: {
            pageNum: 1,
            pageSize: 10,
            search: '',
          },
          // 表格参数
          tableData: {
            // 遮罩层
            loading: true,
            // 总条数
            total: 0,
            // 分类表格数据
            List: [],
          },
          // 弹窗参数 start
          createTitle: "创建项目",
          editTitle: "编辑项目",
          projectDialogParams: {
            visible: false,
            title: this.createTitle,
            projectId: 0,
            projectName: '',
            projectDescription: '',
          },
        };
      },
      // 页面创建时调用
      created () {
        this.getList();
      },
      methods: {
        // 获取表格数据
        getList () {
          // 先loading等待从后端获取数据
          this.tableData.loading = true;
          // TODO 此处请求后端: 获取列表数据接口
          this.tableData.List = [{"id": 1, "name": "项目1", "description": "项目1的描述"}, {"id": 2,"name": "项目2", "description": "项目2的描述"},{"id": 3,"name": "项目3", "description": "项目3的描述"}];
          this.tableData.total = this.tableData.List.length;
          this.tableData.loading = false;
        },
        /** 搜索按钮操作 */
        handleQuery () {
          this.queryParams.pageNum = 1;
          this.getList();
        },
        /** 重置按钮操作 */
        resetQuery () {
          this.queryParams.pageNum = 1;
          this.queryParams.pageSize = 10;
          this.queryParams.search = '';
          this.handleQuery();
        },
        // 翻页按钮
        changePage (currentPageNum) {
          this.queryParams.pageNum = currentPageNum;
          this.getList();
        },
        // 切换每页条数
        changeSize (currentSize) {
          this.queryParams.pageSize = currentSize;
          this.getList();
        },
        /** 查询,分页相关方法 end */
        /** 新建项目弹窗 start */
        // 新建项目按钮
        handleAddProjectButton () {
          // 打开弹窗,清空内容
          this.projectDialogParams.visible = true;
          this.projectDialogParams.title = this.createTitle;
          this.projectDialogParams.projectId = 0;
          this.projectDialogParams.projectName = '';
          this.projectDialogParams.projectDescription = '';
        },
        // 弹窗确定按钮
        handleSubmitButton () {
          var data = {
            id: this.projectDialogParams.projectId,
            name: this.projectDialogParams.projectName,
            description: this.projectDialogParams.projectDescription,
          }
          // TODO 此处请求后端: 新增接口
          // 接口请求成功提示信息
          this.$message({
            showClose: true,
            message: '成功',
            type: 'success'
          });
          // 关闭对话框
          this.projectDialogParams.visible = false;
          // 更新列表数据
          this.getList();
        },
        /** 新建项目弹窗 end */
        /** 表格方法 */
        // 编辑按钮
        handleEdit (id) {
          // 回显内容
          // TODO 此处请求后端: 获取数据信息接口
          // 接口返回信息给弹窗内容赋值,做回显
          this.projectDialogParams.title = this.editTitle;
          this.projectDialogParams.projectId = id;
          this.projectDialogParams.projectName = '回显的项目名称';
          this.projectDialogParams.projectDescription = '回显的项目描述';
          // 回显数据赋值完成后打开弹窗
          this.projectDialogParams.visible = true;
        },
        // 删除二次弹窗
        // 确定按钮
        handleDelete(index){
          // 关闭弹窗
          this.$refs[`popover-delete-${index}`].doClose();
          // TODO 此处请求后端: 删除接口, 数据id 可以用  this.tableData.list[index].id  获取
          // 删除成功提示信息
          this.$message({
            showClose: true,
            message: '删除成功',
            type: 'success'
          });
          // 更新列表数据
          this.getList();
        },
        // 取消按钮
        deleteCancelButton(index){
          // 关闭弹窗
          this.$refs[`popover-delete-${index}`].doClose();
        },
        // 表格方法 start
        indexMethod (index) {
          return index + 1 + 10 * (this.queryParams.pageNum - 1);
        }, 
      },
    })
  </script>
</html>

到了这里,关于vue2组件库:表格数据展示通用页面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 若依前后端分离+Vue2+Element UI实现根据列数据展示不同页面的数据

    多个表格中存在同一字段,并且可通过该字段查到与之对应的数据。举个简单的例子,比如我有一个学生表、一个老师表、一个课程表,假设老师表和学生表里都有课程ID这一字段,那么我可以在课程表里通过课程ID来,查找需要上这门课的学生,以及教这门课的老师,并且在

    2024年01月19日
    浏览(47)
  • vue2 ElementUI 表单标签、表格表头添加问号图标提示

    使用element-ui有时候需要对表格的 表头 、表单的 标签 进行自定义,添加问号的悬浮提示。 要达到的效果,如图所示: https://element.eleme.cn/#/zh-CN/component/tooltip 定义问号图标,图标上方显示tooltip提示内容 代码: 实现效果: 为什么不写content属性和里面的提示内容也能显示?

    2024年01月25日
    浏览(51)
  • vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示

    * 初始化node 查看node是否安装 node -v 初始化命令 npm init 初始化配置解释如下: 完成后会有一个package.json文件 * 安装可能用到的依赖 根据需求安装,我这里需要对接mysql,安装依赖 ,我是一次性安装完,后边会直接使用,也可以边安装边使用。如下 安装成功如下: * 配置文件

    2024年02月15日
    浏览(51)
  • 【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

    gogo code 是一个基于 AST (源代码的抽象语法结构树状表现形式)的 JavaScript/Typescript/HTML 代码转换工具,可以用它来构建一个代码转换程序来帮助自动化完成如框架升级、代码重构、多平台转换等工作。 当前 GoGoCode 支持解析和操作如下类型的代码: ○JavaScript(JSX) ○Typescript

    2024年02月12日
    浏览(54)
  • 【分页表格】Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)

    这篇文章,主要介绍Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)。 目录 一、分页表格 1.1、运行效果 1.2、运行环境 1.3、案例代码

    2024年02月11日
    浏览(59)
  • vue2 Elementui 树形组件怎么实现多选并获取选中节点的node对象

    一.前言 树形组件是我们经常用到的组件,主要场景就是:公司后台管理的部门管理,做文章目录等。 二.常用的几种方法及说明 1.node-click:节点被点击时的回调 共三个参数,依次为:传递给  data  属性的数组中该节点所对应的对象、 节点对应的 Node 、节点组件本身。 2.c

    2024年02月16日
    浏览(46)
  • elementUi中的el-table表格的内容根据后端返回的数据用不同的颜色展示

    效果图如下: 首先 首先:需要在表格行加入 template slot-scope=\\\"{ row }\\\" /template标签  2.在methods里面加入这个方法:  3.去设置自己喜欢的颜色: //还有另一种(这种后端返回的数据里面带有背景色的字段)    

    2024年02月10日
    浏览(42)
  • 通用vue组件化登录页面

    1.首先建立一个login文件夹,在里面建立对应的login.vue文件 2.设置登录页面的背景图,在App.vue文件中使用router-view进行展示登录组件 3.先给App.vue的div元素设置高度100%,之后在login.vue里面去设置背景图 这里注意怎么使login组件垂直水平居中的样式 1.首先建立一个cpns的文件夹,里

    2024年02月09日
    浏览(42)
  • 【手机号验证/前端】Vue2+elementUI编写一个手机号验证码登录页面,路由式开发(附完整代码)

    目录 效果图: 一、template部分 二、style样式 三、script部分 1.先对手机号的格式进行一个判断 2.接下来就是表单验证规则rules 3.最后就是methods了 (1)首先我们给获取验证码绑定一个方法 (2)然后封装一个axios接口,方便后面测试联调(这部分每个人封装的都不一样) (3)然

    2024年02月17日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包