You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
17 KiB

2 years ago
// 打印功能数据整合
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
2 years ago
"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号)
2 years ago
"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) | 到货请求详情 (PurchaseReceiptRequest.vue)
2 years ago
/**
* @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 物品发运单" : ""
2 years ago
_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号)
2 years ago
_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;
2 years ago
// 实际数量: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;
2 years ago
// 实际数量: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;