/* * @Description:通用/汇总生成 */ export default { execute(context, param) { let subTable = param.subTable||'BXMXZB'; let directGeneration = param.directGeneration||false; if (!param.billId || !param.billDefine) { context.dom.$Message.info("请配置查询单据参数"); return; } if(context.selects.length==0){ context.dom.$Message.info("请勾择需要生成的数据"); return; } let that = this; let billDefine = param.billDefine.replace(/_E/ig, "").replace(/_R/ig, "").replace(/_A/ig, ""); let arrApi1 = []; context.selects.forEach(v=>{ arrApi1.push(that.searchBillObj(billDefine,v[param.billId])) }) let arr = []; let arrApi = []; Promise.all(arrApi1).then((list) => { list.forEach((res,i)=>{ if(res && res[subTable]){ res[subTable].forEach(v=>{ let billDefine1 = v.BILLNAME && v.BILLNAME.replace(/_E/ig, "").replace(/_R/ig, "").replace(/_A/ig, ""); arrApi.push(that.searchBillObj(billDefine1,v.BILLID,i)) }) } arr.push({//直接生成 index:i, data:res }) }) if(!directGeneration){//间接生成 Promise.all(arrApi).then((subList) => { arr.forEach(v=>{ v.detailData=[]; subList.forEach(f=>{ if(v.index==f.index){ v.detailData.push(f); } }) }) that.generateVoucher(arr,context); }) }else{ that.generateVoucher(arr,context); } }) }, generateVoucher(list,context){ GMS.$http.post('/mechanismVchr/allCreateVchr',list).then(res => { if (res.status === 200) { if (res.data.data && typeof res.data.data == 'object' && res.data.data.showVoucher === false) { if(res.data.data.successVchrs && res.data.data.successVchrs.length > 0){ GMS.vbus.$emit('custom-query-refresh'); GMS.vbus.$emit('tab-count-refresh'); } context.dom.$Modal.warning({ title: '信息提示', content: res.data.data.processMsg, onOk: () => {}, }); } else { GMS.vbus.$emit('previewVoucherTY',res.data.data); } } }) }, searchBillObj(billDefine, billId ,index) { !billDefine.startsWith('bill.') && (billDefine = 'bill.' + billDefine) return new Promise((resolve, reject) => { GMS.$http.get( `/gms/bill/${billDefine}/${billId}?withSubs=true` ).then((data) => { if (data.status == 200 && data.data.code == 0) { let obj = data.data.content obj.billDefine = billDefine; obj.index = index resolve(obj); } }).catch((error)=>{ reject(error) }) }) } }