vue列表中日期数据渲染和导出

列表中的日期数据(包括prop,如第一天的“1”转换成“D1”,)从接口获取,最终调用xlsx导出列表日期数据。

template中:

<div style="text-align: right; margin-right: 30px">
        <el-radio-group v-model="radio1" @change="onlyTodaySearch">
          <el-radio-button :label="2">只看今天</el-radio-button>
          <el-radio-button :label="3">导出</el-radio-button>
        </el-radio-group>
      </div>

      <el-table height="580" :data="list" border>
        <el-table-column fixed label="序号" type="index" width="50"></el-table-column>

        <template v-for="(v, i) in this.head">
          <el-table-column :key="i + v.prop" :prop="v.prop" :label="v.label" :fixed="v.fixed" width="120"
            v-if="v.prop != total">
          </el-table-column>
          <el-table-column :key="i + v.prop" :prop="v.prop" :label="v.label" width="120" sortable v-else>
          </el-table-column>
        </template>
      </el-table>

import myXLSX from "xlsx";

需要导入xlsx,

script中的只看今天、导出,搜索方法:

methods: {

    // 只看今天与导出的切换
    onlyTodaySearch(buttonSelected) {
      if (buttonSelected == 2) {
        let todayData = new Date();
        let dateValue =
          todayData.getFullYear() +
          "-" +
          (todayData.getMonth() + 1) +
          "-" +
          todayData.getDate() +
          " " +
          "00:00:00";

        let params = {
          date_bug_close_start: dateValue,
          date_bug_close_end: "",
          closer_name: this.valueIt,
        };
        bug.BugCloseShowByDate(params).then((res) => {
          let bdl = [];
          for (let v of res.data.Bug_detail_list) {
            let temp = {
              closer: v.closer,
              total: v.total,
            };
            for (let d of v.Bug_close_data_by_date) {
              temp['D' + d.date] = d.num;
            }
            bdl.push(temp);
          }
          this.list = bdl;
        });
      } else if (buttonSelected == 3) {
        // 执行导出的接口请求
        this.$confirm("是否导出当前页面的数据?", "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        }).then((response) => {
          let outputTableRecord = [
            [
              "序号",
              "Bug关闭人",
              "Bug关闭总数",
              "D1",
              "D2",
              "D3",
              "D4",
              "D5",
              "D6",
              "D7",
              "D8",
              "D9",
              "D10",
              "D11",
              "D12",
              "D13",
              "D14",
              "D15",
              "D16",
              "D17",
              "D18",
              "D19",
              "D20",
              "D21",
              "D22",
              "D23",
              "D24",
              "D25",
              "D26",
              "D27",
              "D28",
              "D29",
              "D30",
              "D31",
            ], // 表头
          ];
          // console.log(this.list)
          this.list.forEach((item, index) => {
            let rowData = [];
            // 导出的行内容
            rowData = [
              index + 1,
              item.closer,
              item.total,
              item.D1,
              item.D2,
              item.D3,
              item.D4,
              item.D5,
              item.D6,
              item.D7,
              item.D8,
              item.D9,
              item.D10,
              item.D11,
              item.D12,
              item.D13,
              item.D14,
              item.D15,
              item.D16,
              item.D17,
              item.D18,
              item.D19,
              item.D20,
              item.D21,
              item.D22,
              item.D23,
              item.D24,
              item.D25,
              item.D26,
              item.D27,
              item.D28,
              item.D29,
              item.D30,
              item.D31,
            ];
            outputTableRecord.push(rowData);
          });
          // console.log(outputTableRecord);
          let workSheet = myXLSX.utils.aoa_to_sheet(outputTableRecord); // 创建工作薄
          let bookNew = myXLSX.utils.book_new();
          myXLSX.utils.book_append_sheet(bookNew, workSheet, "Bug新增-日期分布数据"); // 工作簿名称
          let fileName = "Bug新增-日期分布数据" + "_" + this.timeFormat() + ".xlsx";
          myXLSX.writeFile(bookNew, fileName);
        });
      }
    },
    timeFormat() {
      let time = new Date();
      let year = time.getFullYear();
      let month = time.getMonth() + 1;
      let date = time.getDate();
      let hours = time.getHours();
      let minutes = time.getMinutes();
      let seconds = time.getSeconds();
      return (
        year +
        "-" +
        this.addZero(month) +
        "-" +
        this.addZero(date) +
        " " +
        this.addZero(hours) +
        ":" +
        this.addZero(minutes) +
        ":" +
        this.addZero(seconds)
      );
    },
    addZero(num) {
      return num < 10 ? "0" + num : num;
    },

    BugCloseShowByDate() {
      let params = {
        date_bug_close_start: this.tiem[0] || "",
        date_bug_close_end: this.tiem[1] || "",
        closer_name: this.valueIt,
      };
      bug.BugCloseShowByDate(params).then((res) => {
        let bdl = [];
        let head = [];
        head.push({ prop: "closer", label: "Bug关闭人", fixed: "fixed" });
        head.push({ prop: "total", label: "Bug关闭总数", fixed: "fixed" });
        for (let i = 1; i < 32; i++) {
          head.push({ prop: 'D' + i + "", label: i + "" });
        }
        this.head = head;
        for (let v of res.data.Bug_detail_list) {
          let temp = {
            closer: v.closer,
            total: v.total,
          };

          for (let d of v.Bug_close_data_by_date) {
            temp['D' + d.date] = d.num;
          }
          bdl.push(temp);
        }
        this.list = bdl;
      });
    },
  },

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue 日历可以通过自定义组件的方式来实现法定休班的显示。首先需要定义一个数据数组,用来存储法定休班的日期。可以通过接口获取这些日期数据,也可以通过手动输入的方式来添加。 然后在日历的模板,通过 v-for 循环遍历每一个日期,判断当前日期是否为法定休班,如果是则添加相应的样式来标识出来。 在实现上述功能的同时,还可以添加一些更加丰富的功能,如可点击的日期、月份切换等,以及一些扩展的功能,如节假日提醒、调班调休等。 总的来说,Vue 日历的实现不仅可以提高用户的使用体验,在企业应用也可以方便地实现法定休班等相关功能,从而提高工作效率和员工满意度。 ### 回答2: Vue日历显示法定休班可以使用两种方法:使用第三方组件或自定义组件。 使用第三方组件可以节省编写代码的时间,可以使用开源的组件如vue-calendar和vue-full-calendar等。这些组件可以通过npm包管理器安装和引入到Vue项目。在组件可以配置日期和节假日,同时可以使用自定义样式来自定义显示效果。大多数组件可以支持多种语言和不同的时区,具有较好的兼容性。 自定义组件则需要根据自己的需求设计和编写,可以使用Vue提供的API和插件来处理日期和节假日。可以在template创建表格或日历,使用computed属性来计算日期和节假日的状态,结合样式来完成日历显示法定休班的效果。自定义组件的优点是可以支持更多的功能,如国际化、自定义样式等。 总之,Vue日历显示法定休班需要根据项目需求和开发者编程能力来决定使用第三方组件还是自定义组件。无论哪种方式,都需要注意兼容性、效率和可维护性等方面的问题。 ### 回答3: Vue日历可以很方便地实现法定休假和班级的显示。在日历组件,我们可以定义一个列表,将法定休假和班级一一绑定,然后在渲染日历时按照日期匹配法定假期和班级。 首先,我们需要定义一个数组来存储所有法定假期和班级,直接在data定义即可。哪些日期是法定节假日和调休日,可以通过调用第三方的API获取,也可以在页面手动定义。定义完后,我们将每个日期作为键,将其属性设置为对应的班级或假期。 接着,我们可以在日历组件定义一个方法,用来渲染每个日期的样式和文本。在该方法,我们可以首先获取当前日期,并检查其是否为法定假期或调休日。如果是,则渲染假期的样式和文本,否则,则通过查找当前日期对应的班级,来渲染班级名称和对应的样式。 在使用Vue日历显示法定休班的过程,还需要注意一些问题。例如:如果某个法定假期与班级的安排冲突,该怎么处理?我们需要在设计数据结构时,先判断出哪些日期是有争议的,然后通过向用户弹出提示框等方式让用户选择如何处理。 总之,Vue日历可以很方便地显示法定休班。通过合理的设计数据结构和页面渲染逻辑,我们可以创建一个易用而又功能强大的日历组件。当然,针对具体应用场景的情况,还需要根据需要进行调整和优化,从而更好地满足用户需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值