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.
330 lines
19 KiB
330 lines
19 KiB
// 打印功能数据整合
|
|
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
|
|
"supplierSimpleName": propsData[_options.supplierSimpleName] || propsData.supplierSimpleName,//供应商名称
|
|
"supplierCode": propsData[_options.supplierCode] || propsData.supplierCode,//供应商代码
|
|
"poNumber": propsData[_options.poNumber] || propsData.poNumber,//订单号
|
|
"asnNumber": propsData[_options.asnNumber] || propsData.asnNumber,//发货单号
|
|
"remark": propsData[_options.remark] || propsData.remark,//备注
|
|
"planArriveDate":propsData[_options.planArriveDate] || propsData.planArriveDate,//要求到货时间
|
|
// "contacts": propsData[_options.contacts] || propsData.contacts,//客户名称 暂未使用
|
|
// "customerAddressCode":propsData[_options.customerAddressCode] || propsData.customerAddressCode,//客户地址 暂未使用
|
|
// "supplierName": propsData[_options.supplierName] || propsData.supplierName,//供应商名称 暂未使用
|
|
"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,//储位
|
|
"itemCode": item[_options.itemCode] || item.itemCode,//物品代码(ERP号)
|
|
"qty": item[_options.qty] || item.qty,//要货数量 + 整包数量
|
|
"packingCode": item[_options.packingCode] || item.packingCode,//条形码
|
|
"printIndex":item[_options.printIndex] || Number(key)+1,//打印序列
|
|
// "itemName": item[_options.itemName] || item.itemName,//物品名称 暂未使用
|
|
"stdPackQty": item[_options.stdPackQty] || item.stdPackQty,//整包数量 暂未使用
|
|
}
|
|
],
|
|
})
|
|
});
|
|
let data = {
|
|
reportName: name || 'xiangbq.rdlx',
|
|
dataUrl: url || 'ccc',
|
|
jsonData: JSON.stringify(_printData)
|
|
};
|
|
return data
|
|
}
|
|
|
|
//打印【箱标签-上下2个】(xiangbq_two.rdlx)
|
|
//使用位置:拆分箱标签 (splitLabels.vue)
|
|
/**
|
|
* @param {*} propsData 必填 详情数据 示例:this.propsData
|
|
* @param {*} options 自定义特殊配置值 示例:{'number':'poNumber'} (number值将传为poNumber)
|
|
* @param {*} name reportName
|
|
* @param {*} url dataUrl
|
|
* @returns
|
|
*/
|
|
export function initPrintPackingCodeTwoData(oldData,newData,options,name,url){
|
|
if(!oldData && !newData)return {}
|
|
let _printData = {}
|
|
let _options = options ? options : {}
|
|
// 上方信息
|
|
if(oldData){
|
|
_printData={
|
|
"oldTitle":oldData[_options.title] || oldData.title || "FATY 物品发运单",//上方_title
|
|
"oldSupplierSimpleName": oldData[_options.supplierSimpleName] || oldData.supplierSimpleName,//上方_供应商名称
|
|
"oldSupplierCode": oldData[_options.supplierCode] || oldData.supplierCode,//上方_供应商代码
|
|
"oldPoNumber": oldData[_options.poNumber] || oldData.poNumber,//上方_订单号
|
|
"oldAsnNumber": oldData[_options.asnNumber] || oldData.asnNumber,//上方_发货单号
|
|
"oldRemark": oldData[_options.remark] || oldData.remark,//上方_备注
|
|
"oldPlanArriveDate":oldData[_options.planArriveDate] || oldData.planArriveDate,//上方_要求到货时间
|
|
"oldSupplierItemName": oldData[_options.supplierItemName] || oldData.supplierItemName,//上方_零件名(供应商零件名)
|
|
"oldSupplierItemCode": oldData[_options.supplierItemCode] || oldData.supplierItemCode,//上方_零件号(供应商零件号)
|
|
"oldSpecifications": oldData[_options.specifications] || oldData.specifications,//上方_规格
|
|
"oldProduceDate": oldData[_options.produceDate] || oldData.produceDate,//上方_生产时间
|
|
"oldLot": oldData[_options.lot] || oldData.lot,//上方_生产批次
|
|
"oldLocationErpCode": oldData[_options.locationErpCode] || oldData.locationErpCode,//上方_储位
|
|
"oldItemCode": oldData[_options.itemCode] || oldData.itemCode,//上方_物品代码(ERP号)
|
|
"oldQty": oldData[_options.qty] || oldData.qty,//上方_要货数量
|
|
"oldStdPackQty": oldData[_options.stdPackQty] || oldData.stdPackQty,//上方_整包数量
|
|
"oldPackingCode": oldData[_options.packingCode] || oldData.packingCode,//上方_条形码
|
|
"oldPrintIndex":oldData[_options.printIndex] || 1,//上方_打印序列
|
|
..._printData
|
|
}
|
|
}
|
|
// 下方信息
|
|
if(newData){
|
|
_printData={
|
|
"newTitle":newData[_options.title] || newData.title || "FATY 物品发运单",//下方_title
|
|
"newSupplierSimpleName": newData[_options.supplierSimpleName] || newData.supplierSimpleName,//下方_供应商名称
|
|
"newSupplierCode": newData[_options.supplierCode] || newData.supplierCode,//下方_供应商代码
|
|
"newPoNumber": newData[_options.poNumber] || newData.poNumber,//下方_订单号
|
|
"newAsnNumber": newData[_options.asnNumber] || newData.asnNumber,//下方_发货单号
|
|
"newRemark": newData[_options.remark] || newData.remark,//下方_备注
|
|
"newPlanArriveDate":newData[_options.planArriveDate] || newData.planArriveDate,//下方_要求到货时间
|
|
"newSupplierItemName": newData[_options.supplierItemName] || newData.supplierItemName,//下方_零件名(供应商零件名)
|
|
"newSupplierItemCode": newData[_options.supplierItemCode] || newData.supplierItemCode,//下方_零件号(供应商零件号)
|
|
"newSpecifications": newData[_options.specifications] || newData.specifications,//下方_规格
|
|
"newProduceDate": newData[_options.produceDate] || newData.produceDate,//下方_生产时间
|
|
"newLot": newData[_options.lot] || newData.lot,//下方_生产批次
|
|
"newLocationErpCode": newData[_options.locationErpCode] || newData.locationErpCode,//下方_储位
|
|
"newItemCode": newData[_options.itemCode] || newData.itemCode,//下方_物品代码(ERP号)
|
|
"newQty": newData[_options.qty] || newData.qty,//下方_数量 + 整包数量
|
|
"newStdPackQty": newData[_options.stdPackQty] || newData.stdPackQty,//上方_整包数量
|
|
"newPackingCode": newData[_options.packingCode] || newData.packingCode,//下方_条形码
|
|
"newPrintIndex":newData[_options.printIndex] || 1,//下方_打印序列
|
|
..._printData
|
|
}
|
|
}
|
|
let data = {
|
|
reportName: name || 'xiangbq_two.rdlx',
|
|
dataUrl: url || 'ccc',
|
|
jsonData: JSON.stringify(_printData)
|
|
};
|
|
return data
|
|
}
|
|
|
|
|
|
// 打印【箱标签-单页4个】 (xiangbq_many.rdlx)
|
|
// 使用位置:半成品上架标签 (PartiallyPreparedProducts.vue) | 生产退库标签 (productionReturnLabel.vue)
|
|
// | 创建标签 (RecycledMaterialsLabel.vue) | 到货请求 (PurchaseReceiptRequest.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 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 false
|
|
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 || ''
|
|
_outData.headerName = propsData.headerName || localStorage.getItem('companyName')
|
|
propsData.details.forEach((item,key) => {
|
|
// 序号
|
|
item.xh = Number(key) + 1;
|
|
// 特殊配置
|
|
if(options && options.details){
|
|
for(var op in options.details){
|
|
item[op] = item[options.details[op]]
|
|
}
|
|
}
|
|
// 转义字典
|
|
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')
|
|
}
|
|
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 使用参数
|
|
// 使用位置:采购收货记录-合格品收货明细tab页 (PurchaseReceiptNote-msQuery.vue)
|
|
// 发货单号:asnNumber; 制表日:creationTime; 供应商:supplierCode; 供应商简称:supplierShortName
|
|
// 物品代码:itemCode; 物品名称:itemName; 箱码:packingCode; 单位:uom; 数量:qty; 状态:statusStr; 不合格原因:reasonStr;
|
|
|
|
// thd.rdlx 使用参数
|
|
// 使用位置:上架前退货记录 (beforeGroundingReturnNote.vue) | 上架后退货记录 (purchaseReturn => returnNote.vue PurchaseReturnNote)
|
|
// 使用位置:采购收货记录-不合格品收货明细tab页 (PurchaseReceiptNote-msQuery.vue)
|
|
// 退货单号:number; 发货单号:asnNumber; 制表日:creationTime; 供应商:supplierCode; 供应商简称:supplierShortName
|
|
// 物品代码:itemCode; 物品名称:itemName; 箱码:packingCode; 单位:uom; 数量:qty; 退货原因:reasonStr;
|
|
|
|
// lineSideWarehouse.rdlx 使用参数
|
|
// 使用位置:线边仓调拨记录 (lineSideWarehouseAllocationNote.vue)
|
|
// 调拨单号:number; 参考单据:poNumber; 制表日:creationTime; 调拨部门:deptCode; 部门名称:deptName
|
|
// 物品代码:itemCode; 单位:uom; 预计调拨量:preQty; 调入储位:toLocationCode; 实际调拨量:qty; 调出储位:fromLocationCode;
|
|
|
|
// fscll.rdlx | fsctl.rdlx 使用参数
|
|
// 使用位置:非生产领料申请 (pickingRequest.vue - fscll.rdlx)
|
|
// 使用位置:非生产退料申请 (materialReturnRequest.vue - fsctl.rdlx)
|
|
// 单号:number; 参考单据:?; 制表日:creationTime; 部门代码:deptCode; 部门名称:deptName; 项目分类名称:projCapacityName; 专案代码:caseCode; 说明:remark
|
|
// 料品编号:itemCode; 品名:itemName; 单位:uom; 预计量:preQty; 实际量:qty; 储位:locationCode; 配置:configuration
|
|
|
|
// 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 productionReturnNote)
|
|
|
|
// zjfl.rdlx 使用参数
|
|
// 使用位置:直接发料记录 (directIssueNote.vue)
|
|
// 单号:number; 制表日:creationTime; 部门名称:deptName;
|
|
// 物品代码:itemCode; 物品名称:itemName; 物品描述:itemDesc1; 零件号:itemCode; 来源库位:fromLocationCode;
|
|
// 实际数量:qty; 单位:uom; 批次:fromLot; 调入储位:toLocationErpCode; 调出储位:fromLocationErpCode;
|
|
|
|
// hslrkd.rdlx 使用参数
|
|
// 使用位置:回收料收货记录 (materialsReceipt.vue recycledMaterialsReceipt)
|
|
// 入库单号: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;
|
|
|
|
// ysd.rdlx 使用参数
|
|
// 使用位置:采购上架记录 (PutawayNote.vue)
|
|
// 供应商代码:supplierCode; 供应商名称:supplierSimpleName; 制表日:creationTime; 采购单:poNumber; 收货单号:receiptNumber; 验收口:dockCode; 请购部门:deptName;
|
|
// 物品代码:itemCode; 验收备注:remark; 厂商料品单号:supplierItemCode; 物品名称:itemName; 收料量:qty; 验收日期:arriveDate; 单位:uom; 储位:toLocationErpCode;
|
|
|