导出按钮的不平凡之路

106 阅读1分钟

之前做的导出按钮都是直接调用API,并且是由前端主导并下载到本地,而这个导出按钮是完全通过接口由后端主导并下载的,嗖记录一下--


以下是通过后端导出接口传参导出要导出表单的指定数据并传到数据库:
<el-row class="tableb">

<div class="public_tablebutton">  

<el-button-group>

<el-tooltip class="item" effect="dark" content="导出文件" placement="top-end">

<el-button @click="exportfile"> <img src="转存失败,建议直接上传图片文件 ../../assets/commonImg/commonicon/export.png" alt="转存失败,建议直接上传图片文件">

</el-button>

</el-tooltip>

<el-tooltip class="item" effect="dark" content="打印列表" placement="top-end">

<el-button @click="printData"> <img src="转存失败,建议直接上传图片文件 ../../assets/commonImg/commonicon/print.png" alt="转存失败,建议直接上传图片文件">

</el-button>

</el-tooltip>

</el-button-group>

</div>

</el-row>
exportfile () {

            const data = {

            exportColumns:[

                {

                    fieldName:'优惠券类别编码',

                    keyName:'voucherCategoryCode',

                    sortNum:0,

                    valueType:'string'

                },

                {

                    fieldName:'优惠券编码',

                    keyName:'voucherCode',

                    sortNum:1,

                    valueType:'string'

                },

                {

                    fieldName:'优惠券单号',

                    keyName:'voucherNo',

                    sortNum:2,

                    valueType:'string'

                },

                {

                    fieldName:'导出时间',

                    keyName:'exportedTime',

                    sortNum:3,

                    valueType:'string'

                }

            ],

            pageSizeName:'limit',

            pageNoName:'page',

            fileName:'礼券日志',

            exportedTime:'2023-08-29 00:00:00',

            exportParameter:{

                limit:10,

                page:1,

               

            },

            path:'IP地址' + '/rediancrm-platform-coupon/coupon/voucher/voucherInfo/voucherLogList',

            refreshToken:sessionStorage.getItem('refreshToken')

  


        }

            if (this.listData.length == 0) {

                this.$message({

                    message: '没有数据可导出',

                    type: 'warning'

                });

            } else {

                // var filter = this.beforeform;

                getlist.exportFile('rediancrm-platform-report/export/report/addExportTask', data, this.exportSuccess);

            }

        },

        exportSuccess (msg, check) {

            if (check == 1) {

                this.$message({

                    message: msg,

                    type: 'success'

                });

            } else {

                this.$message(msg);

            }

        },

以下是通过后端查询接口调出刚刚上传的导出表单数据:
getTaBleList() {
                this.loadingTable = true;
                this.$postReport('export/report/queryExportTask', {
                                page:this.page.num,
                                limit:this.page.size,
                                order: 'id desc'
                        })
                        .then(res => {
                                if (res.data.code== '0') {
                                        this.loadingTable = false;
                                        this.listData = res.data.data.list;
                                        this.page.total = res.data.data.total * 1;
                                } else {
                                        this.$message.error(res.data.msg);
                                        this.listData = [];
                                        this.loadingTable = false;
                                        this.page.total = 0;
                                }
                        })
                        .catch(err => {
                                this.loadingTable = false;
                        });
			},

后边再通过点击列表侧的下载按钮调出window即可

image.png