• vue 导出excel中的多个sheet


    1、引入echartsConfig.js

    const Econfig = {
        tooltip: {
            trigger: 'axis',
            backgroundColor: 'rgba(0,0,0,0.6)',
            borderColor: 'rgba(0,0,0,0.6)',
            textStyle: {
                color: "#fff"
            },
            axisPointer: {
                // 坐标轴指示器,坐标轴触发有效
                type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
            },
        },
        grid: {
            left: "4%",
            right: "4%",
            bottom: "8%",
            top: "20%",
            containLabel: true,
        },
        ai: AiBf,
        chatEvent: chatEvent
    }

    /**自动切换事件 */
    function AiBf(echart, option, currentIndex) {
        var id = setInterval(() => {
            var dataLen = option.series[0].data.length;
            // 取消之前高亮的图形
            echart.dispatchAction({
                type: "downplay",
                seriesIndex: 0,
                dataIndex: currentIndex,
            });
            currentIndex = (currentIndex + 1) % dataLen;
            // 高亮当前图形
            echart.dispatchAction({
                type: "highlight",
                seriesIndex: 0,
                dataIndex: currentIndex,
            });
            // 显示 tooltip
            echart.dispatchAction({
                type: "showTip",
                seriesIndex: 0,
                dataIndex: currentIndex,
            });
        }, 5000);
        return id
    }
    /**鼠标事件 */
    // mouseover: 鼠标移到某元素之上

    // mouseout: 鼠标从某元素移开

    function chatEvent(myChart, tid, option) {
        var id = 0;
        myChart.on('click', (params) => {
            console.log("你点我干嘛!!!!!!")
        })
        myChart.on('mouseover', (params) => {
            clearInterval(tid)
            clearInterval(id)
        })
        myChart.on('mouseout', (params) => {
            clearInterval(tid)
            clearInterval(id)
            id = AiBf(myChart, option, params.dataIndex)
        })
    }




    export {
        Econfig
    }
     
    2、组件
    <template>
      <div class="excel">
        <img
          @click="exportExcel"
          class="exportexcel"
          title="导出excel"
          :src="require('../../assets/img/' +skins+ '/exportExcel.png')"
        >
      </div>
    </template>
     
    <script>
    import { mapState } from 'vuex';
    export default {
      props: ['exceldata'],
      computed: {
        ...mapState('setting', ['skins'])
      },
      data() {
        return {
        };
      },
      methods: {

        foramtth(json_fields) {
          let obj = {
            th: [],
            filterVal: []
          }
          for (const key in json_fields) {
            obj.th.push(key)
            obj.filterVal.push(json_fields[key])
          }
          return obj
        },

        exportExcel() {
          // 格式化传过来的数据源
          let { title, data } = this.exceldata
          if (data.length > 0) {
            let result = []
            data.forEach(opt => {
              let obj = {
                sheetTitle: opt.sheetTitle,
                th: this.foramtth(opt.json_fields).th,
                data: this.formatJson(this.foramtth(opt.json_fields).filterVal, opt.json_data), //格式化的数据
              }
              result.push(obj)
            })

            require.ensure([], () => {
              let { export2ExcelMultiSheet } = require("../../utils/Export2Excel");
              export2ExcelMultiSheet(result, title);
            });

          }
        },
        // 格式化数据
        formatJson(filterVal, jsonData) {
          if (jsonData.length > 0) {
            return jsonData.map((v) => filterVal.map((j) => v[j]));
          } else {
            return []
          }
        },
      },
    };
    </script>
     <style lang="less" scoped>
    .excel {
      display: flex;
      justify-content: flex-end;
    }
    .exportexcel {
      cursor: pointer;
      25px;
      margin-right: 30px;
    }
    </style>
    3、直接引用
     <exportExcels :exceldata="exceldata" v-if="isShowCaozuo"/>
  • 相关阅读:
    Microsoft.NET User Group
    白话MVP 和 MVVM 【转】
    高效的二分法TOP MAX/TOP MIN分页存贮过程
    策略模式5
    说说我们项目组的例行会议
    合格的项目经理
    说说我们的招聘和面试
    web安全问题汇总
    ASP.NET中常用的优化性能方法
    说说我们安排的培训
  • 原文地址:https://www.cnblogs.com/zhouxiaobai/p/16135051.html
Copyright © 2020-2023  润新知