//打印年终奖(新改) printData(){ //获取列表选中的数据 let rows = this.$refs.pamMarketreportRef.selection; //单据类型 let billType = this.formInline.billType if(rows && rows.length == 1){ this.loading = true; Promise.all([import('@/views/vbm/pam/pamannual/voucherManagePrintTemplate.vue')]).then(async ([abc]) => { const constructor = Vue.extend(abc.default); const instance = new constructor(); let dataList = await this.constructPrintData(rows); // alert(JSON.stringify(dataList)) this.loading = false; instance.dataObj = {dataList: dataList, timeOut: rows.length ,billType:billType}; // 监听抛出的数据 this.$emit("emitStream", {data: "data"}); instance.$on("emitStream", params => { }); // 挂载到 ID 为 plateContainer 的DOM元素 instance.$mount("#plateContainer"); }) }else{ this.$message({ message: '请选择数据!', type: 'warning' }); } }, //构造打印数据(新改) constructPrintData(rows){ return new Promise(resolve => { let _this = this; let dataList = []; //查询卡片数据放入集合中 async.mapSeries(rows, function(item,callback) { pamannualApi.GetTableDataPmb({fkMarketreport:item.pkMarketreport}, 100000, 1).then(res => { let entryData = res.data.results; //构造分页数据 console.log("----------打印---------",item); pamannualApi.findOrgState(item.orgId).then(res => { _this.constructPageingData(item,entryData,dataList,res.data.obj); callback(null,item); }) }); }) resolve(dataList); }) }, //构造分页数据(新改) constructPageingData(main,entryData,dataList,orgState){ let entryList = []; let start = 0; let orgState1 = orgState; let sumAmount = 0//应发合计 let jobRemuneration = 0//员工计酬 let individual = 0//本次应扣个税 let shared = 0//公摊绩酬 let withHolding = 0 //暂扣款 let bonusLoan = 0//员工存贷款奖励 let depositLoan = 0//公摊存贷款奖励 let deferredInterest = 0//延期支付利息 let deferredPayment = 0//延期支付金额 let otherRewards = 0//其他发放 let paidAmount = 0//实发金额 //子表固定10行数据,超出的另外构造一个新的凭证详细信息,做分页打印 entryData.forEach((ele,index) => { //求各个合计值 sumAmount = this.newAdd(sumAmount,ele.totalPayable); jobRemuneration = this.newAdd(jobRemuneration,ele.jobRemuneration); individual = this.newAdd(individual,ele.individual); shared = this.newAdd(shared,ele.shared); withHolding = this.newAdd(withHolding,ele.withHolding); bonusLoan = this.newAdd(bonusLoan,ele.bonusLoan); depositLoan = this.newAdd(depositLoan,ele.depositLoan); deferredInterest = this.newAdd(deferredInterest,ele.deferredInterest); deferredPayment = this.newAdd(deferredPayment,ele.deferredPayment); otherRewards = this.newAdd(otherRewards,ele.otherRewards); paidAmount = this.newAdd(paidAmount,ele.paidAmount); //分录8条之后分页 let count = index + 1; if(count !== entryData.length && count % 25 === 0){ let end = index; entryList.push(entryData.slice(start,end+1)); start = count; }else if(count === entryData.length){ entryList.push(entryData.slice(start,entryData.length)); } }); //构造单个页面数 entryList.forEach((ele,index) => { //每组循环多深度复制一个新的凭证主表数据 let mainData = JSON.parse(JSON.stringify(main)); if(index === entryList.length - 1){ mainData.workType = orgState1; mainData.sumAmount = Accounting.formatMoney(sumAmount , '', 2); mainData.jobRemuneration = Accounting.formatMoney(jobRemuneration,'',2); mainData.individual = Accounting.formatMoney(individual,'',2); mainData.shared = Accounting.formatMoney(shared,'',2); mainData.withHolding = Accounting.formatMoney(withHolding,'',2); mainData.bonusLoan = Accounting.formatMoney(bonusLoan,'',2); mainData.depositLoan = Accounting.formatMoney(depositLoan,'',2); mainData.deferredInterest = Accounting.formatMoney(deferredInterest,'',2); mainData.deferredPayment = Accounting.formatMoney(deferredPayment,'',2); mainData.otherRewards = Accounting.formatMoney(otherRewards,'',2); mainData.paidAmount = Accounting.formatMoney(paidAmount,'',2); } mainData.pageNumber = (index+1) +''; mainData.pageTotal = entryList.length +''; mainData.entryList = ele; dataList.push(mainData); }) },