• vue + element +导出excel表


    自己实际用:
    <template>
      <div>
        <el-form :inline="true" :model="searchForm" style="margin-top:20px;">
          <el-row>
            <el-col :span="2">
              <el-form-item>
                <span>注册日期:</span>
              </el-form-item>
            </el-col>
            <el-col :span="2" style="margin-left:-30px;">
              <el-form-item>
                &nbsp;
                <el-button type="primary" @click="day" plain>&nbsp;昨天&nbsp;</el-button>
              </el-form-item>
            </el-col>
            <el-col :span="2">
              <el-form-item>
                <el-button type="primary" @click="week" plain>近一周&nbsp;</el-button>
              </el-form-item>
            </el-col>
            <el-col :span="2">
              <el-form-item>
                <el-button type="primary" @click="month" plain>近一个月</el-button>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form>
                <el-form-item label="自定义日期:">
                  <el-date-picker
                    v-model="time"
                    type="datetimerange"
                    align="right"
                    unlink-panels
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    @change="getTime"
                  ></el-date-picker>
                </el-form-item>
              </el-form>
            </el-col>
            <el-col :span="2">
              <el-form-item>
                <el-button type="primary" @click="search(item)">查询</el-button>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        </div>
        <el-table :data="tableData" border style=" 100%;margin-top:50px;" v-loading="loading">
          <el-table-column fixed prop="id" label="序号" width="100" align="center"></el-table-column>
          <el-table-column prop="name" align="center" label="姓名" width="110"></el-table-column>
          <el-table-column label="角色" width="80" align="center">
            <template slot-scope="scope">{{workerType(scope.row).text}}</template>
          </el-table-column>
          <el-table-column label="所属地区" width="150" align="center">
            <template slot-scope="scope">{{scope.row.province}}—{{scope.row.city}}</template>
          </el-table-column>
          <el-table-column label="状态" width="110" align="center">
            <template slot-scope="scope">{{stateType(scope.row).text}}</template>
          </el-table-column>
          <el-table-column prop="hospitalName" label="服务医院" width="170" align="center"></el-table-column>
          <el-table-column prop="createTime" label="注册时间" align="center"></el-table-column>
          <el-table-column prop="source" label="注册来源" width="110" align="center"></el-table-column>
          <el-table-column prop="tjName" label="推荐人" width="110" align="center"></el-table-column>
          <el-table-column prop="managerName" label="区域经理" width="110" align="center"></el-table-column>
        </el-table>
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page.sync="currentPage"
          :page-size="pageParams.size"
          layout="total, prev, pager, next"
          :total="pageParams.totalCount"
        ></el-pagination>
        <el-button type="primary" @click="export2Excel">导出</el-button>
        
      </div>
    </template>
    <script>
    import { DateDay } from "utils/formData"; //时间转化格式
    import queryString from "querystring";
    import page from "data/page";
    export default {
      name: "signUser",
      mixins: [page],
      data() {
        return {
          loading: false,
          tableData: [],
          addSum: {},
          addallSum: {},
          searchForm: {
            page: 0,
            size: 10,
            beginTime: "",
            endTime: ""
          },
          time: "",
          staday: "",
          endday: "",
          staweek: "",
          endweek: "",
          stamonth: "",
          endmonth: "",
          dayFalse: ""
        };
      },
      mounted() {
        this.search();
        this.getaddSum();
        this.getaddallSum();
      },
      methods: {
        export2Excel() {
          require.ensure([], () => {
            const {
              export_json_to_excel
            } = require("../../../vendor/Export2Excel");
            const tHeader = [
              "序号",
              "姓名",
              "角色",
              "所属地区",
              "状态",
              "服务医院",
              "注册时间",
              "注册来源",
              "推荐人",
              "区域经理"
            ]; //对应表格输出的title
            const filterVal = [
              "id",
              "name",
              "workerType",
              "province",
              "state",
              "hospitalName",
              "createTime",
              "source",
              "tjName",
              "managerName"
            ]; // 对应表格输出的数据
            const list = this.tableData;
            list.forEach(function(value, index, array) {
              value.province = value.province + "-" + value.city;
            });
            const data = this.formatJson(filterVal, list);
            data.forEach(function(value, index, array) {
              if (value[2] == 100) {
                value[2] = "医生";
              } else if (value[2] == 200) {
                value[2] = "护士";
              } else if (value[2] == 300) {
                value[2] = "其他";
              } else {
                value[2] = value[2];
              }
              if (value[4] == -1) {
                value[4] = "待审核";
              } else if (value[4] == 0) {
                value[4] = "正常";
              } else if (value[4] == -2) {
                value[4] = "被拒绝";
              } else if (value[4] == -2) {
                value[4] = "被拒绝";
              } else if (value[4] == 10) {
                value[4] = "信息未完善";
              } else if (value[4] == 20) {
                value[4] = "未实名认证";
              } else {
                value[4] = value[4];
              }
            });
            const excelTitle =
              this.searchForm.beginTime + "至" + this.searchForm.endTime;
            export_json_to_excel(tHeader, data, excelTitle); //对应下载文件的名字
          });
        },
        formatJson(filterVal, jsonData) {
          return jsonData.map(v => filterVal.map(j => v[j]));
        },
        num(s) {
          return s < 10 ? "0" + s : s;
        },
        getTime() {
          // console.log(this.time);
          this.dayFalse = "4";
          this.searchForm.beginTime = this.time[0];
          this.searchForm.endTime = this.time[1];
        },
        day() {
          let day = new Date();
          day.setTime(day.getTime() - 24 * 60 * 60 * 1000);
          let dayOld =
            day.getFullYear() +
            "-" +
            this.num(day.getMonth() + 1) +
            "-" +
            this.num(day.getDate());
          this.staday = dayOld + " " + "00:00:00";
          this.endday = dayOld + " " + "24:00:00";
          this.dayFalse = "1";
          this.search();
        },
        week() {
          let nowdate = new Date();
          nowdate.setTime(nowdate.getTime());
          var dayDate =
            nowdate.getFullYear() +
            "-" +
            this.num(nowdate.getMonth() + 1) +
            "-" +
            this.num(nowdate.getDate());
          let week = new Date(nowdate - 6 * 24 * 3600 * 1000);
          let y = week.getFullYear();
          let m = week.getMonth() + 1;
          let d = week.getDate();
          let formatwdate = y + "-" + this.num(m) + "-" + this.num(d);
          this.staweek = formatwdate + " " + "00:00:00";
          this.endweek = dayDate + " " + "24:00:00";
          // console.log(this.staweek, this.endweek);
          this.dayFalse = "2";
          this.search();
        },
        month() {
          let nowdate = new Date();
          nowdate.setMonth(nowdate.getMonth());
          let y = nowdate.getFullYear();
          let m = nowdate.getMonth() + 1;
          let d = nowdate.getDate();
          let month = y + "-" + this.num(m) + "-" + this.num(d);
          this.endmonth = month + " " + "24:00:00";
          this.stamonth = DateDay(nowdate) + " " + "00:00:00";
          this.dayFalse = "3";
          this.search();
        },
        // 查询
        search() {
          this.getaddSum();
          this.getaddallSum();
          this.loading = true;
          this.searchForm.page = this.currentPage - 1;
          this.searchForm.size = 10;
          if (this.dayFalse == "1") {
            this.searchForm.beginTime = this.staday;
            this.searchForm.endTime = this.endday;
          } else if (this.dayFalse == "2") {
            this.searchForm.beginTime = this.staweek;
            this.searchForm.endTime = this.endweek;
          } else if (this.dayFalse == "3") {
            this.searchForm.beginTime = this.stamonth;
            this.searchForm.endTime = this.endmonth;
          } else if (this.dayFalse == "4") {
            this.searchForm.beginTime = this.searchForm.beginTime;
            this.searchForm.endTime = this.searchForm.endTime;
          } else {
            this.searchForm.beginTime = "";
            this.searchForm.endTime = "";
          }
          this.axios
            .post("/tj/register/list", this.searchForm)
            .then(res => {
              if (res.data.code == 200) {
                this.loading = false;
                if (!res.data) return;
                this.tableData = res.data.data.list;
                this.dayFalse = "";
                // console.log("this.tableData", this.tableData);
                this.setPage(res.data.data);
              }
            })
            .catch(err => {
              this.$message(err.message);
            });
        },
        getaddSum() {
          var dayNow = new Date();
          dayNow.setTime(dayNow.getTime());
          var dayDate =
            dayNow.getFullYear() +
            "-" +
            (dayNow.getMonth() + 1) +
            "-" +
            dayNow.getDate();
          // console.log(dayDate);
          let form = {
            beginTime: dayDate + " " + "00:00:00",
            endTime: dayDate + " " + "24:00:00"
          };
          if (this.dayFalse == "1") {
            form.beginTime = this.staday;
            form.endTime = this.endday;
          } else if (this.dayFalse == "2") {
            form.beginTime = this.staweek;
            form.endTime = this.endweek;
          } else if (this.dayFalse == "3") {
            form.beginTime = this.stamonth;
            form.endTime = this.endmonth;
          } else if (this.dayFalse == "4") {
            form.beginTime = this.searchForm.beginTime;
            form.endTime = this.searchForm.endTime;
          } else {
            form.beginTime = form.beginTime;
            form.endTime = form.endTime;
          }
          this.axios
            .post("/tj/register/sum", form)
            .then(res => {
              if (res.data.code == 200) {
                this.loading = false;
                if (!res.data) return;
                this.addSum = res.data.data;
              }
            })
            .catch(err => {
              this.$message(err.message);
            });
        },
        getaddallSum() {
          let form = {
            beginTime: "",
            endTime: ""
          };
          this.axios
            .post("/tj/register/sum", form)
            .then(res => {
              if (res.data.code == 200) {
                this.loading = false;
                if (!res.data) return;
                this.addallSum = res.data.data;
              }
            })
            .catch(err => {
              this.$message(err.message);
            });
        },
        workerType(item) {
          let status = item.workerType;
          let res = { num: status, text: "" };
          switch (status) {
            case 100:
              res.text = "医生";
              break;
            case 200:
              res.text = "护士";
              break;
            case 300:
              res.text = "其他";
              break;
            case null:
              res.text = "";
              break;
            case "":
              res.text = "";
              break;
          }
          return res;
        },
        stateType(item) {
          let status = item.state;
          let res = { num: status, text: "" };
          switch (status) {
            case -1:
              res.text = "待审核";
              break;
            case 0:
              res.text = "正常";
              break;
            case -2:
              res.text = "被拒绝";
              break;
            case 10:
              res.text = "信息未完善";
              break;
            case 20:
              res.text = "未实名认证";
              break;
            case null:
              res.text = "";
              break;
            case "":
              res.text = "";
              break;
          }
          return res;
        }
      }
    };
    </script>
    <style lang="less">
    .el-row {
      &:last-child {
        margin-bottom: 0;
      }
    }
    .dis_flex {
      display: flex;
      font-display: row;
      align-items: center;
    }
    .box {
       120px;
      text-align: center;
      height: 50px;
      line-height: 25px;
    }
    </style>
  • 相关阅读:
    spark shuffle 机制
    hive explain 源码分析
    前端jQurey
    js-dom操作
    前端JS
    前端CSS
    Redis和MongoDB区别
    MySQL数据库备份
    MySQL索引
    python连接mysql服务端
  • 原文地址:https://www.cnblogs.com/ylblogs/p/12362755.html
Copyright © 2020-2023  润新知