// 打印功能数据整合 import { Enum } from "@/utils/index" import store from '@/store/index' /**/ // 打印【箱标签-单个】 (xiangbq.rdlx) // 使用位置:补打标签 (RepairLabels.vue) /** * @param {*} propsData 必填 详情数据 示例:this.propsData * @param {*} options 自定义特殊配置值 示例:{'number':'poNumber'} (number值将传为poNumber) * @param {*} name reportName * @param {*} url dataUrl * @returns */ export function initPrintPackingCodeData(propsData,options,name,url){ if(!propsData || propsData.details.length <= 0)return {} let _printData = { "boxlabel":[] } let _options = options ? options : {} propsData.details.forEach((item,key) => { _printData["boxlabel"].push({ "title":propsData[_options.title] || propsData.title || "FATY 物品发运单",//title "contacts": propsData[_options.contacts] || propsData.contacts,//客户名称 "customerAddressCode":propsData[_options.customerAddressCode] || propsData.customerAddressCode,//客户地址 "supplierCode": propsData[_options.supplierCode] || propsData.supplierCode,//供应商代码 "supplierName": propsData[_options.supplierName] || propsData.supplierName,//供应商名称 "remark": propsData[_options.remark] || propsData.remark,//备注 "planArriveDate":propsData[_options.planArriveDate] || propsData.planArriveDate,//要求到货时间 "poNumber": propsData[_options.poNumber] || propsData.poNumber,//订单号? "asnNumber": propsData[_options.asnNumber] || propsData.asnNumber,//发货单号? "details": [ { "supplierItemName": item[_options.supplierItemName] || item.supplierItemName,//零件名(供应商零件名) "supplierItemCode": item[_options.supplierItemCode] || item.supplierItemCode,//零件号(供应商零件号) "specifications": item[_options.specifications] || item.specifications,//规格 "produceDate": item[_options.produceDate] || item.produceDate,//生产时间 "lot": item[_options.lot] || item.lot,//生产批次 "locationErpCode": item[_options.locationErpCode] || item.locationErpCode,//储位 "itemName": item[_options.itemName] || item.itemName,//物品名称 "itemCode": item[_options.itemCode] || item.itemCode,//物品代码(ERP号) "stdPackQty": item[_options.stdPackQty] || item.stdPackQty,//整包数量 "qty": item[_options.qty] || item.qty,//要货数量 "packingCode": item[_options.packingCode] || item.packingCode,//条形码 "printIndex":item[_options.printIndex] || Number(key)+1,//打印序列 } ], // "asnNumber": propsData[_options.number] || propsData.number, // "supplierCode": propsData[_options.supplierCode] || propsData.supplierCode, // "supplierName": propsData[_options.supplierName] || propsData.supplierName, // "timeWindow": propsData[_options.timeWindow] || propsData.timeWindow, // "arriveTime": item[_options.arriveDate] || item.arriveDate, // "details": [ // { // "poNumber": item[_options.poNumber] || item.poNumber, // "poLine":item[_options.poLine] || item.poLine, // "qty": { // "uom":item[_options.uom] || item.uom,//必填 // "qty": item[_options.qty] || item.qty,//必填 // }, // "packingCode": item[_options.packingCode] || item.packingCode, // "containerCode": item[_options.containerCode] || item.containerCode, // "lot": item[_options.lot] || item.lot,//必填 // "batch": { // "supplierBatch": item[_options.supplierBatch] || item.supplierBatch, // "produceDate": item[_options.produceDate] || item.produceDate, // "expireDate": item[_options.expireDate] || item.expireDate, // }, // "itemCode": item[_options.itemCode] || item.itemCode,//必填 // "item": { // "id": item[_options.itemId] || item.itemId, // "name": item[_options.itemName] || item.itemName, // "desc1": item[_options.itemDesc1] || item.itemDesc1, // "desc2": item[_options.itemDesc2] || item.itemDesc2, // }, // "Elevel": null // } // ] }) }); // let paramName = '' // if (name) { // paramName = localStorage.getItem('print') + '/' + name // } else { // paramName = localStorage.getItem('print') + '/' + 'xiangbq.rdlx' // } let data = { reportName: name || 'xiangbq.rdlx', dataUrl: url || 'ccc', jsonData: JSON.stringify(_printData) }; return data } // 打印【箱标签-单页4个】 (xiangbq_many.rdlx) // 使用位置:半成品上架标签 (PartiallyPreparedProducts.vue) | 生产退库标签 (productionReturnLabel.vue) // | 创建标签 (RecycledMaterialsLabel.vue) | 到货通知详情 (ArriveNotice-ms.vue) /** * @param {*} propsData 必填 详情数据 示例:this.propsData * @param {*} options 自定义特殊配置值 示例:{'number':'poNumber'} (number值将传为poNumber) * @param {*} name reportName * @param {*} url dataUrl * @returns */ export function initPrintPackingCodeManyData(propsData,options,name,url){ if(!propsData || propsData.details.length <= 0)return {} let _printData = { "boxlabel":[] } let _options = options ? options : {} // 按4个分组数据 let newList = [] let chunk = 4; propsData.details.forEach((item,key)=>{ item.printIndex = Number(key + 1) }) for(var i = 0; i < propsData.details.length ;i+=chunk) { newList.push(propsData.details.slice(i,i + chunk)) } let _index = null newList.forEach((item,key)=>{ let _label = {} item.forEach((item2,key2)=>{ if(key2 == 0){ if(!_index){ _index = '0' }else{ _index = Number(_index) + 1 } } let _title = propsData ? "FATY 物品发运单" : "" _label['title'+Number(key2 + 1)]=propsData[_options.title] || propsData.title || _title,//title _label['contacts'+Number(key2 + 1)]= propsData[_options.contacts] || propsData.contacts,//客户名称 _label['customerAddressCode'+Number(key2 + 1)]=propsData[_options.customerAddressCode] || propsData.customerAddressCode,//客户地址 _label['supplierCode'+Number(key2 + 1)]= propsData[_options.supplierCode] || propsData.supplierCode,//供应商代码 _label['supplierSimpleName'+Number(key2 + 1)]= propsData[_options.supplierSimpleName] || propsData.supplierSimpleName,//供应商名称(简称) _label['remark'+Number(key2 + 1)]= propsData[_options.remark] || propsData.remark,//备注 _label['planArriveDate'+Number(key2 + 1)]=propsData[_options.planArriveDate] || propsData.planArriveDate,//要求到货时间 _label['poNumber'+Number(key2 + 1)]= propsData[_options.poNumber] || propsData.poNumber,//订单号? _label['asnNumber'+Number(key2 + 1)]= propsData[_options.asnNumber] || propsData.asnNumber,//发货单号? _label['supplierItemName'+Number(key2 + 1)] = item[_options.supplierItemName] || item2.supplierItemName;//零件名(供应商零件名) _label['supplierItemCode'+Number(key2 + 1)] = item[_options.supplierItemCode] || item2.supplierItemCode;//零件号(供应商零件号) _label['specifications'+Number(key2 + 1)] = item[_options.specifications] || item2.specifications;//规格 _label['produceDate'+Number(key2 + 1)] = item[_options.produceDate] || item2.produceDate;//生产时间 _label['lot'+Number(key2 + 1)] = item[_options.lot] || item2.lot;//生产批次 _label['locationErpCode'+Number(key2 + 1)] = item[_options.locationErpCode] || item2.locationErpCode;//储位 _label['itemCode'+Number(key2 + 1)] = item[_options.itemCode] || item2.itemCode;//物品代码(ERP号) _label['stdPackQty'+Number(key2 + 1)] = item[_options.stdPackQty] || item2.stdPackQty;//整包数量 _label['qty'+Number(key2 + 1)] = item[_options.qty] || item2.qty;//要货数量 _label['packingCode'+Number(key2 + 1)] = item[_options.packingCode] || item2.packingCode;//条形码 _label['printIndex'+Number(key2 + 1)] = item[_options.printIndex] || item2.printIndex;//序号 _printData.boxlabel[_index] = _label }) }) // let paramName = '' // if (name) { // paramName = localStorage.getItem('print') + '/' + name // } else { // paramName = localStorage.getItem('print') + '/' + 'xiangbq_many.rdlx' // } let data = { reportName: name || 'xiangbq_many.rdlx', dataUrl: url || 'ccc', jsonData: JSON.stringify(_printData) }; return data } // 字典转义 const printEnumOption = { UnqualifiedReason:{reportStr:'reasonStr',staName:'UnqualifiedReason',value:'reason'}, PurReturnReason:{reportStr:'reasonStr',staName:'PurReturnReason',value:'reason'}, Reason:{reportStr:'reasonStr',staName:'Reason',value:'reasonCode'}, AdjustmentReason:{reportStr:'reasonStr',staName:'AdjustmentReason',value:'reasonCode'}, } /**/ // 打印【全部数据】 /** * @param {*} propsData 必填 详情数据 示例:this.propsData * @param {*} name 必填 reportName * @param {*} enumOption 选填 转义状态 如果是字符串直接走[printEnumOption]格式, * 如果自定义格式:{reportStr:'报表中用到的值',staName:'localStorage中的名称',value:'要转义的detail中的值',label:"可不填,默认label"} * @param {*} options 选填 自定义特殊配置值 示例:{'number':'poNumber'} (number值将传为poNumber) * @param {*} url 选填 dataUrl * @returns */ // export function initPrintAllData(propsData,name,enumOption,options,url){ if(!propsData || propsData.details.length <= 0)return {} let _printData = {details:[]} let _outData = {} for(var key in propsData){ if(key != 'details')_outData[key] = propsData[key] if(options){ for(var op in options){ if(op != 'details')_outData[op] = propsData[options[op]] } } } _outData.title = propsData.title || '' propsData.details.forEach((item,key) => { // 序号 item.xh = Number(key) + 1; // 转义字典 if(enumOption){ let _enumOption = (typeof enumOption == 'string') ? printEnumOption[enumOption] : enumOption item[_enumOption.reportStr] = Enum(store.getters.dictionaries[_enumOption.staName], item[_enumOption.value] , _enumOption.label || 'label') } // 特殊配置 if(options && options.details){ for(var op in options.details){ item[op] = item[options.details[op]] } } let _item = Object.assign({},item, _outData); _printData.details.push(_item) }); let data = { reportName: name, dataUrl: url || 'ccc', jsonData: JSON.stringify(_printData) }; return data } // 当前模板数据 /**todo:储位,预计量,字段确定 */ // cgshd.rdlx 使用参数 // 使用位置:采购收货记录 (PurchaseReceiptNote-msQuery.vue) // 发货单号:asnNumber; 制表日:creationTime; 供应商:supplierCode; 供应商简称:supplierShortName // 物品代码:itemCode; 物品名称:itemName; 箱码:packingCode; 单位:uom; 数量:qty; 状态:statusStr; 不合格原因:reasonStr; // thd.rdlx 使用参数 // 使用位置:上架前退货记录 (beforeGroundingReturnNote.vue) | 上架后退货记录 (purchaseReturn => returnNote.vue) // 退货单号:number; 发货单号:asnNumber; 制表日:creationTime; 供应商:supplierCode; 供应商简称:supplierShortName // 物品代码:itemCode; 物品名称:itemName; 箱码:packingCode; 单位:uom; 数量:qty; 退货原因:reasonStr; // lineSideWarehouse.rdlx 使用参数 // 使用位置:线边仓调拨记录 (lineSideWarehouseAllocationNote.vue) // 调拨单号:number; 参考单据:requestNumber; 制表日:creationTime; 调拨部门:deptCode; 部门名称:deptName // 物品代码:itemCode; 单位:uom; 预计调拨量:preQty; 调入储位:toLocationCode; 实际调拨量:qty; 调出储位:fromLocationCode; // fscll.rdlx | fsctl.rdlx 使用参数 // 使用位置:非生产领料申请 (lineSideWarehouseAllocationNote.vue - fscll.rdlx) // 使用位置:非生产退料申请 (materialReturnRequest.vue - fsctl.rdlx) // 单号:number; 制表日:creationTime; 部门代码:deptCode; 部门名称:deptName // 物品代码:itemCode; 物品名称:itemName; 预计量:preQty; 实际量:qty; 单位:uom; 储位:locationCode; // 项目分类代码:projCapacityCode; 项目分类名称:projCapacityName; 专案代码:caseCode; 专案名称:caseName; 说明:remark // cwdbd.rdlx 使用参数 // 使用位置:储位调拨记录 (interStorageAllocationNote.vue) // 调拨单号:number; 制表日:creationTime; 调拨日期:activeDate // 物品代码:itemCode; 物品名称:itemName; 单位:uom; 调出储位:fromLocationCode; 调入储位:toLocationCode; 调拨量:qty; // khcwdbd.rdlx 使用参数 // 使用位置:客户储位调拨记录 (customerStorageAllocationNote.vue) // 调拨单号:number; 制表日:creationTime; 使用者:worker; 部门代码:deptCode; 客户储位:toLocationCode // 序号:xh; 物品代码:itemCode; 物品名称:itemName; 预计调拨量:preQty; 实际调拨量:qty; 调出储位:fromLocationCode; // xbcbfd.rdlx 使用参数 // 使用位置:线边仓报废记录 (lineSideWarehouseScrappingNote.vue) // 报废单号:number; 制表日:creationTime; // 物品代码:itemCode; 物品名称:itemName; 储位:fromLocationCode; 数量:qty; 原因说明:reasonStr; 参考单据:scrapRequestNumber; // tzd.rdlx 使用参数 // 使用位置:线边仓调整记录 (lineSideWarehouseAdjustmentSheetNote.vue) // 单号:number; 制表日:creationTime; // 物品代码:itemCode; 物品名称:itemName; 储位:locationCode; 数量:adjustQty; 原因说明:reasonStr; 参考单据:requestNumber; // xbcll.rdlx 使用参数 // 使用位置:自动发料任务 (automaticCallJob-msQuery.vue) | 自动发料记录 (automaticCallNote.vue) // 使用位置:人工发料任务 (IssueJob.vue) | 人工发料记录 (IssueNote.vue) // 单号:number; 制表日:creationTime; 部门名称:deptName; // 物品代码:itemCode; 物品名称:itemName; 物品描述:itemDesc1; 零件号:itemCode; 来源库位:fromLocationCode; // 实际数量:qty; 单位:uom; 批次:fromLot; 调入储位:toLocationErpCode; 调出储位:fromLocationErpCode; // xbctl.rdlx 使用参数 xbctl.rdlx报表 和 xbcll.rdlx报表 目前字段相同,除了领/退字段 // 使用位置:生产退库记录 (productionReturn => returnNote.vue) // zjfl.rdlx 使用参数 // 使用位置:直接发料记录 (directIssueNote.vue) // 单号:number; 制表日:creationTime; 部门名称:deptName; // 物品代码:itemCode; 物品名称:itemName; 物品描述:itemDesc1; 零件号:itemCode; 来源库位:fromLocationCode; // 实际数量:qty; 单位:uom; 批次:fromLot; 调入储位:toLocationErpCode; 调出储位:fromLocationErpCode; // hslrkd.rdlx 使用参数 // 使用位置:回收料收货记录 (materialsReceipt.vue) // 入库单号:number; 制表日:creationTime; 入库日期:activeDate; 部门代码:deptCode; 部门名称:deptName; // 物品代码:itemCode; 物品名称:itemName; 物品描述1:itemDesc1; 物品描述2:itemDesc2; 数量:qty; 储位:locationErpCode; // chdmxb.rdlx 使用参数 // 使用位置:原料直发记录 (materialDirectSendNote.vue) // 出货单号:number; 出货日期:deliverTime; 制表日:creationTime; 客户名称:customerCode; 客户地址:customerAddressCode; // 序号:xh, 物品代码:itemCode; 物品名称:itemName; 单位:uom; 箱标签:packingCode, 出货数量:qty; 正厂编号:itemDesc2; // ysd.rdlx 使用参数 // 使用位置:采购上架记录 (PutawayNote.vue) // 供应商代码:supplierCode; 供应商名称:supplierSimpleName; 制表日:creationTime; 采购单:poNumber; 收货单号:receiptNumber; 验收口:dockCode; 请购部门:deptName; // 物品代码:itemCode; 验收备注:remark; 厂商料品单号:supplierItemCode; 物品名称:itemName; 收料量:qty; 验收日期:arriveDate; 单位:uom; 储位:toLocationErpCode;