zoukankan      html  css  js  c++  java
  • eleUI后台管理表格下载思路及代码示例

    思路:

           渲染的是能分页的内容,我们一般会下载查询条件下的所有的内容,因此我们需要又一个隐藏的表格将所有的内容渲染进去,分页的渲染进行展示,所有的渲染进行下载;

    代码示例:html
    <!--页面渲染的表格--> 
    <el-table :data="tableDataArr" stripe style=" 100%" v-loading="loading">
          <el-table-column prop="xIndex" label="序号" width="50" align="center" header-align="center"></el-table-column>
          <el-table-column
            prop="invitationCode"
            label="邀请者邀请码"
            width="120"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationOpenId"
            label="邀请者openId"
            width="280"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationIp"
            label="邀请者IP"
            width="150"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationCountry"
            label="邀请者国家"
            width="100"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationTime"
            label="邀请时间"
            width="180"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationCode"
            label="被邀请者邀请码"
            width="120"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationOpenId"
            label="被邀请者openId"
            width="280"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationIp"
            label="被邀请者IP"
            width="150"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationCountry"
            label="被邀请者国家"
            width="110"
            align="center"
            header-align="center"
          ></el-table-column>
        </el-table>
        <!-- 下载的总表格绘制 -->
        <el-table :data="tableData" stripe style=" 100%; display:none" id="out-table">
          <el-table-column prop="xIndex" label="序号" width="50" align="center" header-align="center"></el-table-column>
          <el-table-column
            prop="invitationCode"
            label="邀请者邀请码"
            width="120"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationOpenId"
            label="邀请者openId"
            width="280"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationIp"
            label="邀请者IP"
            width="150"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationCountry"
            label="邀请者国家"
            width="100"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="invitationTime"
            label="邀请时间"
            width="180"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationCode"
            label="被邀请者邀请码"
            width="120"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationOpenId"
            label="被邀请者openId"
            width="280"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationIp"
            label="被邀请者IP"
            width="150"
            align="center"
            header-align="center"
          ></el-table-column>
          <el-table-column
            prop="beInvitationCountry"
            label="被邀请者国家"
            width="110"
            align="center"
            header-align="center"
          ></el-table-column>
        </el-table>
    代码示例:js
    import { formatDate } from "@/utils/jsExtend.js";
    import { listInvitationDataApi } from "@/api/stats.js";
    // 引入导出Excel表格依赖
    import FileSaver from "file-saver";
    import XLSX from "xlsx";
    export default {
      data() {
        return {
          params: {
            appId: '',
            dateBegin: '',
            dateEnd: '',
            code: '',
          },
          loading: false,
          // 临时
          datetimerange: [],
          tableTotal: 0,
          tableData: [], //邀请列表
          tableDataArr: [], //邀请列表分组
          pageSize: 10,
          pageNo: 1,
          TF:false
        }
      },
      created() {
        this.defaultTime();
      },
      mounted() {
        this.params.appId = this.$store.getters.appInfo.id;
      },
      methods: {
        //默认时间
        defaultTime() {
          var timeVal = new Date().getTime() - 24 * 60 * 60 * 1000
          this.params.dateBegin = formatDate(timeVal, "yyyy-MM-dd");
          this.params.dateEnd = formatDate(timeVal, "yyyy-MM-dd");
          this.datetimerange = [this.params.dateBegin, this.params.dateEnd]
        },
        //定义导出Excel表格事件
        exportExcel() {
          /* 从表生成工作簿对象 */
          var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"));
          /* 获取二进制字符串作为输出 */
          var wbout = XLSX.write(wb, {
            bookType: "xlsx",
            bookSST: true,
            type: "array"
          });
          try {
            FileSaver.saveAs(
              //Blob 对象表示一个不可变、原始数据的类文件对象。
              //Blob 表示的不一定是JavaScript原生格式的数据。
              //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
              //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
              new Blob([wbout], { type: "application/octet-stream" }),
              //设置导出文件名称
              '邀请数据' + this.params.dateBegin + '-' + this.params.dateEnd + ".xlsx"
            );
          } catch (e) {
            if (typeof console !== "undefined") console.log(e, wbout);
          }
          return wbout;
        },
        // 筛选时间
        changeExpireSection(val) {
          console.log(val)
          if (val != null) {
            this.params.dateBegin = formatDate(val[0], "yyyy-MM-dd");
            this.params.dateEnd = formatDate(val[1], "yyyy-MM-dd");
            console.log(this.params)
          } else {
            this.defaultTime();
          }
          if (val == null) {
            this.defaultTime();
          }
        },
        //获取信息列表
        listInvitationData() {
          var params = this.params
          this.loading = true;
          listInvitationDataApi(params).then(res => {
            this.loading = false;
            for (var i = 0; i < res.length; i++) {
              res[i].invitationTime = this.renderTime(res[i].invitationTime)
              res[i].xIndex = i + 1;
            }

            this.tableData = res;

            this.tableTotal = res.length;
            this.renderPage();
          })
        },
        //改变时间格式
        renderTime(date) {
          var dateee = new Date(date).toJSON();
          return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/.[d]{3}Z/, '')
        },
        //分页循环
        renderPage() {
          var newArr = []
          for (var i = 0; i < this.pageSize; i++) {

            if (this.tableTotal > ((this.pageNo - 1) * this.pageSize + i)) {
              newArr.push(this.tableData[(this.pageNo - 1) * this.pageSize + i])
            } else {
              break;
            }
          }
          this.tableDataArr = newArr;
        },
        lookUp() {
          this.listInvitationData();
        },
        changePageNum(val) {
          this.pageNo = val;
          this.renderPage();
        },
        handleSizeChange(val) {
          this.pageSize = val;
          this.renderPage();
        },
      }
    }
  • 相关阅读:
    Python lambda函数
    python 获取日期
    <base>元素
    django--开发博客
    django修改时区,数据库
    django初探
    python创建虚拟环境
    资源记录页面
    组管理
    远程管理命令
  • 原文地址:https://www.cnblogs.com/bigkuan/p/13600789.html
Copyright © 2011-2022 走看看