ci-plus
Version:
ci组件库
1,118 lines (1,084 loc) • 47.1 kB
text/typescript
/**
* @module cardPrint
* @author : 卖女孩的小火柴
* !description : 标识卡打印
* @version : 1.1.0
* @since : 创建时间 2024-03-15 15:16:12
* @update : 2024-11-5 13:26:12更新标识卡模板,删除为尚工厂的一些字段
*/
// import { scan_card_code_get } from '@/api/InventoryBatch'
import { ElMessage, MessageParamsWithType } from 'element-plus'
import apis from './baseApi'
import axios from 'axios'
import { ref } from 'vue'
const { storageModule } = apis
const UserData = JSON.parse(localStorage.getItem('UserData') as string)
let users = {
org_id: UserData.orgId || '',
user_code: UserData.loginName || '',
user_name: UserData.name || '',
deptId: UserData.deptId || '',
}
let user = JSON.parse(JSON.stringify(users))
let baseUrls = storageModule //new URL(storageModule).origin + '/' // 图片的地址前缀
let apiurl = storageModule + 'scan_card_code_get/'
export const cardPrint = (
cParams: any,
callback: (data: any) => void,
baseUrl?: string,
): any => {
// 通过表示卡号获取打印信息
let _URL = baseUrl ? baseUrl : apiurl
console.log('标识卡数据版本:v1.0.2');
axios
.get(_URL, {
params: {
page: 1,
...cParams,
...user,
},
})
.then((_res: { data: { code: number; data: any[]; msg: MessageParamsWithType } }) => {
console.log('res: ', _res)
if (_res.data.code != 200 || (_res.data.data && _res.data.data.length < 1)) {
callback([])
return ElMessage.error(_res.data.msg)
}
let data = _res.data.data
console.log('data: ', data)
let dataInfo: any[] = []
data.forEach((item: any) => {
let obj = {}
// 成品工厂-产品标识卡
if (item.card_state == 'CHANPIN' && item.is_finished_goods == 2) {
obj = {
card_state: item.card_state, // 标识卡类型
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '产品标识卡',
r1c4: item.material_name, // 产品类别
r2c2: item.material_code, // 物料编码
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c2: item.material_model, // 产品型号
r4c1: '供应商', // 供应商/生产厂商
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂商',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c2: item.process_name, // 本工序
r6c4: item.next_process_name, // 下工序
r7c2: item.current_inventory, // 本箱数量
r7c4: item.report_user_name
? item.report_user_name
: item.opt_user_name, // 操作工/自检员
r8c2: item.center_data[0]?.inspector, // 巡检员
r8c4: item.product_date, // 生产日期
r9c2: item.value, // 规值
r9c4: item.center_data[0]?.case_count_str, // 2024.08.31 由 规格specification 变更为 件数规格case_count_str
r10c1: '检验日期',
r10c2: item.center_data[0]?.inspect_time,
r10c3: '工单号', // 建
r10c4: item.wip_order_number, // 值
r11c1: '本批数量',
r11c2: item.center_data[0]?.batch_count,
r11c3: '材料炉号', // 建
r11c4: item.center_data[0]?.material_heat_number,
r12c1: '热处理批号',
r12c2: item.center_data[0]?.heat_batch_number,
r12c3: '材料批次',
r12c4: item.center_data[0]?.material_batch_number,
r13c1: '流转批次号', // 建
r13c2: item.flow_lot_number,
r13c3: '采购单号', // 建
r13c4: item.center_data[0]?.purchase_number,
r14c1: '批次序列号',
r14c2: item.center_data[0]?.b2b_batch_number,
r14c3: '采购单行号',
r14c4: item.center_data[0]?.purchase_order,
r40c1: '备注', // 备注
r40c2: item.remark, // 备注
r41c1: item.flow_lot_number
? item.flow_lot_number
: item.center_data[0]?.b2b_batch_number || '', //条形码文本:流转批次号存在就用流转批次号,不存在用批次序列号
}
}
// 为尚工厂-(产品标识卡\尾料标识卡)
else if (
(item.card_state == 'CHANPIN' || item.card_state == 'WEILIAO') &&
item.is_finished_goods == 1
) {
obj = {
card_state: item.card_state, // 标识卡类型
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '产品标识卡',
r1c3: '产品类别', // (为 类型/名称 拼接)
r1c4: item.material_name,
r2c1: '分布场所代号',
r2c2: item.center_data[0]?.distribute_place_name,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '客户名称',
r3c2: item.customer_name || item.center_data[0]?.customer_name || '',
r4c1: '供应商',
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂家',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '淬火件型号',
r6c2: item.quenching_material_model,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '淬火件编码',
r7c2: item.quenching_material_code,
r7c3: '材料牌号',
r7c4: item.center_data[0]?.material_mark,
r8c1: '产品物料号',
r8c2: item.material_code,
r8c3: '库位',
r8c4: item.location_name,
r9c1: '产品型号',
r9c2: item.material_model,
r9c3: '收货人员',
r9c4: item.center_data[0]?.consignee,
r10c1: '净重',
r10c2: item.net_weight + item.net_weight_unit,
r10c3: '单重',
r10c4: item.piece_weight + item.piece_weight_unit,
r11c1: '产线',
r11c2: item.line_name,
r11c3: '工单号',
r11c4: item.wip_order_number,
r12c1: '本箱数量',
r12c2: item.current_inventory,
r12c3: '本批数量',
r12c4: item.center_data[0]?.batch_count,
r13c1: '总箱数',
r13c2: item.total_row,
r13c3: '生产日期',
r13c4: item.product_date,
r14c1: '热处理批号',
r14c2: item.center_data[0]?.heat_batch_number,
r14c3: '件数规格',
r14c4: item.center_data[0]?.case_count_str,
r15c1: '包装方式',
r15c2: item.packaging_specifications_name,
r15c3: '',
r15c4: '',
r40c1: '备注', // 备注
r40c2: item.remark, // 备注key
r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本666
}
}
// 成品工厂-尾料标识卡(为尚无尾料标识卡,使用为尚的成品标识卡)
else if (
item.card_state == 'WEILIAO' &&
item.is_finished_goods == 2
) {
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '尾料标识卡',
r1c4: item.material_name, // 产品类别
r2c2: item.material_code, // 物料编码
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c2: item.material_model, // 产品型号
r4c1: '供应商', // 供应商/生产厂商
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂商',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c2: item.center_data[0]?.tail_reason, // 尾料原因
r7c2: item.process_name, // 本工序
r7c4: item.next_process_name, // 下工序
r8c2: item.current_inventory, // 本箱数量
r8c4: item.opt_user_name, // 操作工/自检员
r9c2: item.center_data[0]?.inspector, // 检验员
r9c4: item.product_date, // 生产日期
r10c2: item.value, // 规值
r10c4: item.specification, // 规格
r11c1: '检查日期', // 检查日期
r11c2: item.center_data[0]?.inspect_time, // 检查日期
r11c3: '工单号', // 建
r11c4: item.wip_order_number, // 值
r12c1: '本批数量',
r12c2: item.center_data[0]?.batch_count,
r12c3: '材料炉号', // 建
r12c4: item.center_data[0]?.material_heat_number,
r13c1: '热处理批号',
r13c2: item.center_data[0]?.heat_batch_number,
r13c3: '采购单号', // 建
r13c4: item.center_data[0]?.purchase_number,
r14c1: '材料批次',
r14c2: item.center_data[0]?.material_batch_number,
r14c3: '采购单行号',
r14c4: item.center_data[0]?.purchase_order,
r15c1: '批次序列号', // 建
r15c2: item.flow_lot_number,
r40c1: '备注', // 备注
r40c2: item.remark, // 备注
r41c1: item.flow_lot_number
? item.flow_lot_number
: item.center_data[0]?.b2b_batch_number || '', //条形码文本:流转批次号存在就用流转批次号,不存在用批次序列号
}
}
// 成品工厂-责废标识卡
else if (item.card_state == 'ZEFEI' && item.is_finished_goods == 2) {
// 如果有不良项目,就循环获取其中值
let badNum = item.bad_item_list?.length || 0
let badList: { id: number; label: string; value: string }[] = []
if (item.bad_item_list && badNum > 0) {
item.bad_item_list?.forEach((badItem: any) => {
let objbad = {
id: badItem.id,
label: badItem.content,
value: badItem.scrap_detail_number,
}
badList.push(objbad)
})
}
// 获取 badList[4] 以后项的 value 拼接成字符串
let badStr = badList
.slice(4)
.map((badItem: any) => {
let l = badItem.label
let v = badItem.value || ''
return l + ':' + v
})
.join(',')
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '责废标识卡',
r1c3: '产品类别', // 产品类别
r1c4: item.material_name, // 产品类别
r2c1: '物料编码', // 物料编码
r2c2: item.material_code, // 物料编码
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '产品型号', // 产品型号
r3c2: item.material_model, // 产品型号
r4c1: '工单号', // 工单号
r4c2: item.wip_order_number, // 工单号
r5c1: '责废总数', // 责废总数
r5c2: item.storage_scrap_count, // 责废总数
r5c4: item.card_code, // 标识卡号
r6c1: '工序', // 工序
r6c2: item.process_name, // 工序
r6c3: '生产日期', // 生产日期
r6c4: item.product_date, // 生产日期
r7c1: '规值', // 规值
r7c2: item.value, // 规值
r7c3: '规格', // 规格
r7c4: item.specification, // 规格
r8c1: '提交人', // 提交人
r8c2: item.opt_user_name, // 提交人
r8c3: '责任人', // 责任人
r8c4: item.duty_user_name, // 责任人
/** ----循环的数据-------------------------------- **/
r9c1: badList[0]?.label, // 渲染数组第0行的'建'
r9c2: badList[0]?.value, // 渲染数组第0行的'值'
r9c3: badList[1]?.label, // 渲染数组第1行的'建'
r9c4: badList[1]?.value, // 渲染数组第1行的'值'
r10c1: badList[2]?.label, // 渲染数组第2行的'建'
r10c2: badList[2]?.value, // 渲染数组第2行的'值'
r10c3: badList[3]?.label, // 渲染数组第3行的'建'
r10c4: badList[3]?.value, // 渲染数组第3行的'值'
// r11c1: badList[4]?.label,// 渲染数组第4行的'建'
// r11c2: badList[4]?.value, // 渲染数组第4行的'值'
r12c1: '其他', // 渲染数组第5及以后行的'建'
r12c2: badStr, // 渲染数组第5及以后行的'值'
r15c1: '检验员',
r15c2: item.center_data[0]?.inspector,
r15c3: '检验日期',
r15c4: item.center_data[0]?.inspect_time,
r16c1: '本箱数量',
r16c2: item.current_inventory,
r16c3: '流转批次号',
r16c4: item.flow_lot_number,
r17c1: '材料炉号',
r17c2: item.center_data[0]?.material_heat_number,
r17c3: '批次序列号',
r17c4: item.center_data[0]?.b2b_batch_number,
r18c1: '材料批次',
r18c2: item.center_data[0]?.material_batch_number,
r40c1: '备注', // 备注
r40c2: item.remark, // 备注
r41c1: item.flow_lot_number
? item.flow_lot_number
: item.center_data[0]?.b2b_batch_number || '', //条形码文本:流转批次号存在就用流转批次号,不存在用批次序列号
}
}
// 为尚工厂-责废标识卡
else if (item.card_state == 'ZEFEI' && item.is_finished_goods == 1) {
// 如果有不良项目,就循环获取其中值
let badNum = item.bad_item_list?.length || 0
let badList: { id: number; label: string; value: string }[] = []
if (item.bad_item_list && badNum > 0) {
item.bad_item_list?.forEach((badItem: any) => {
let objbad = {
id: badItem.id,
label: badItem.content,
value: badItem.scrap_detail_number,
}
badList.push(objbad)
})
}
// 获取 badList[4] 以后项的 value 拼接成字符串
let badStr = badList
.slice(3)
.map((badItem: any) => {
let l = badItem.label
let v = badItem.value || ''
return l + ':' + v
})
.join(',')
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '责废标识卡',
r1c3: '产品类别',
r1c4: item.material_name, // 产品类别
r2c1: '分布场所代号', // 建
r2c2: item.center_data[0]?.distribute_place_name,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '客户名称', // 建
r3c2: item.customer_name || item.center_data[0]?.customer_name || '',
r4c1: '供应商', // 建
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂家',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '淬火件型号',
r6c2: item.quenching_material_model,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '淬火件编码',
r7c2: item.quenching_material_code,
r7c3: '材料牌号',
r7c4: item.center_data[0]?.material_mark,
r8c1: '产品物料号',
r8c2: item.material_code,
r8c3: '库位',
r8c4: item.location_name,
r9c1: '产品型号',
r9c2: item.material_model,
r9c3: '收货人员',
r9c4: item.center_data[0]?.consignee,
r10c1: '责废总数', // 建
r10c2: item.storage_scrap_count,
r10c3: '单重',
r10c4: item.piece_weight + item.piece_weight_unit,
r11c1: '工序',
r11c2: item.process_name,
r11c3: '本批数量',
r11c4: item.center_data[0]?.batch_count,
r12c1: '热处理批号',
r12c2: item.center_data[0]?.heat_batch_number,
r12c3: '生产日期',
r12c4: item.product_date,
r13c1: '责任人',
r13c2: item.duty_user_name,
r13c3: '提交人',
r13c4: item.opt_user_name,
/** ----循环的数据-------------------------------- **/
r30c1: badList[0]?.label, // 渲染数组第0行的'建'
r30c2: badList[0]?.value, // 渲染数组第0行的'值'
r30c3: badList[1]?.label, // 渲染数组第1行的'建'
r30c4: badList[1]?.value, // 渲染数组第1行的'值'
r31c1: '其他', // 渲染数组第2及以后行的'建'
r31c2: badStr, // 渲染数组第2及以后行的'值'
r40c1: '备注', // 备注
r40c2: item.remark, //条形码文本
r41c1: item.center_data[0]?.b2b_batch_number || '', // 条形码文本
}
}
// 成品工厂-返工标识卡
else if (
item.card_state == 'FANGONG' &&
item.is_finished_goods == 2
) {
// 如果有不良项目,就循环获取其中值
let badNum = item.bad_item_list?.length || 0
let badList: { id: number; label: string; value: string }[] = []
if (item.bad_item_list && badNum > 0) {
item.bad_item_list?.forEach((badItem: any) => {
let objbad = {
id: badItem.id,
label: badItem.content,
value: badItem.scrap_detail_number,
}
badList.push(objbad)
})
}
// 获取 badList[4] 以后项的 value 拼接成字符串
let badStr = badList
// .slice(4)
.map((badItem: any) => {
let l = badItem.label
let v = badItem.value || ''
return l + ':' + v
})
.join(',')
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '返工标识卡',
r1c3: '产品类别',
r1c4: item.material_name, // 产品类别
r2c1: '物料编码',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '产品型号',
r3c2: item.material_model,
// r4c1: '批次号',
// r4c2: item.flow_lot_number,
r4c1: '工单号',
r4c2: item.wip_order_number,
r5c1: '返工总数',
r5c2: item.rework_count,
r5c4: item.card_code, // 标识卡号
r6c1: '返工工序',
r6c2: item.rework_process_names,
r6c3: '下工序',
r6c4: item.next_process_name,
r7c1: '操作员',
r7c2: item.report_user_name,
r7c3: '材料炉号',
r7c4: item.center_data[0]?.material_heat_number,
r8c1: '生产日期',
r8c2: item.product_date,
r8c3: '材料批次',
r8c4: item.center_data[0]?.material_batch_number,
r9c1: '检验员',
r9c2: item.center_data[0]?.inspector,
r9c3: '检验日期',
r9c4: item.center_data[0]?.inspect_time,
r10c1: '责任团队',
r10c2: item.duty_team_name,
r10c3: '返工期限',
r10c4: item.rework_dead_line,
r11c1: '处理团队?',
r11c2: 'item.duty_team_name',
r11c3: '处理方法?',
r11c4: 'item.rework_dead_line',
r12c1: '流转批次号',
r12c2: item.flow_lot_number,
r12c3: '批次序列号',
r12c4: item.center_data[0]?.b2b_batch_number,
r13c1: '采购单号',
r13c2: item.center_data[0]?.purchase_number,
r13c3: '采购单行号',
r13c4: item.center_data[0]?.purchase_order,
/** ----循环的数据---------------- **/
r30c1: '不良项目',
r30c2: badStr, // 渲染数组不良项目的'值'
r40c1: '备注',
r40c2: item.remark, // 备注
r41c1: item.flow_lot_number
? item.flow_lot_number
: item.center_data[0]?.b2b_batch_number || '', //条形码文本:流转批次号存在就用流转批次号,不存在用批次序列号
}
}
// 为尚工厂-返工标识卡
else if (
item.card_state == 'FANGONG' &&
item.is_finished_goods == 1
) {
// 如果有不良项目,就循环获取其中值
let badNum = item.bad_item_list?.length || 0
let badList: { id: number; label: string; value: string }[] = []
if (item.bad_item_list && badNum > 0) {
item.bad_item_list?.forEach((badItem: any) => {
let objbad = {
id: badItem.id,
label: badItem.content,
value: badItem.scrap_detail_number,
}
badList.push(objbad)
})
}
// 获取 badList[4] 以后项的 value 拼接成字符串
let badStr = badList
// .slice(4)
.map((badItem: any) => {
let l = badItem.label
let v = badItem.value || ''
return l + ':' + v
})
.join(',')
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '返工标识卡',
r1c3: '产品类别',
r1c4: item.material_name,
r2c1: '分布场所代号',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '客户名称',
r3c2: item.customer_name || item.center_data[0]?.customer_name || '',
r4c1: '供应商',
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂家',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '淬火件型号',
r6c2: item.quenching_material_model,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '淬火件编码',
r7c2: item.quenching_material_code,
r7c3: '材料牌号',
r7c4: item.center_data[0]?.material_mark,
r8c1: '产品物料号',
r8c2: item.material_code,
r8c3: '热处理批号',
r8c4: item.center_data[0]?.heat_batch_number,
r9c1: '产品型号',
r9c2: item.material_model,
r9c3: '收货人员',
r9c4: item.center_data[0]?.consignee,
r10c1: '返工总数',
r10c2: item.rework_count,
r10c3: '本批数量',
r10c4: item.center_data[0]?.batch_count,
r11c1: '返工工序',
r11c2: item.rework_process_names,
r11c3: '返工期限',
r11c4: item.rework_dead_line,
r12c1: '生产日期',
r12c2: item.product_date,
r12c3: '',
r12c4: '',
/** ----循环的数据---------------- **/
r30c1: '不良项目',
r30c2: badStr, // 渲染数组不良项目的'值'
r40c1: '备注',
r40c2: item.remark, // 备注
r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本
}
}
// 成品工厂-装配标识卡(为尚工厂无装配标识卡)
else if (
item.card_state == 'ZHUANGPEI' &&
item.is_finished_goods == 2
) {
// 如果有children ,就循环获取其中值
let badNum = item.children?.length || 0
let badList: {
id: number | string
label: string
value: string
}[] = []
let nqbm = '' // 内圈编码
let nqph = '' // 内圈批号
let wqbm = '' // 内圈编码
let wqph = '' // 内圈批号
if (item.children && badNum > 0) {
item.children?.forEach((badItem: any) => {
let objbad = { id: '', label: '', value: '' }
if (badItem.category == '内圈') {
nqbm = badItem.material_code || ''
nqph = badItem.b2b_batch_number || ''
} else if (badItem.category == '外圈') {
wqbm = badItem.material_code || ''
wqph = badItem.b2b_batch_number || ''
} else {
objbad = {
id: badItem.card_code,
label: badItem.category + '批号',
value: badItem.b2b_batch_number,
}
if (badItem.category) {
badList.push(objbad)
}
}
})
}
let obj1 = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '装配标识卡',
r1c3: '产品类别',
r1c4: item.material_name, // 产品类别
r2c1: '成品编码',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '成品型号',
r3c2: item.material_model,
r4c1: '客户名称/代号',
r4c2: item.customer_name || item.center_data[0]?.customer_name || '',
r5c1: '工单号',
r5c2: item.wip_order_number,
r5c4: item.card_code, // 标识卡号
r6c1: '外圈编码',
r6c2: wqbm,
r6c3: '内圈编码',
r6c4: nqbm,
r7c1: '外圈批号',
r7c2: wqph,
r7c3: '内圈批号',
r7c4: nqph,
}
// 获取obj1最后一条属性的行号列号
// 获取obj1最后一条属性
let lastKey = Object.keys(obj1)[Object.keys(obj1).length - 1]
// 获取行号
let row = Number(parseInt(lastKey.split('r')[1].split('c')[0]))
// 获取列号
let column = Number(lastKey.split('c')[1])
// 通过循环badList数组,将数组中的每一项合并到obj中
let obj2 = {}
for (let i = 0; i < badList.length; i++) {
const item = badList[i]
const rowIndex = Math.floor(i / 2) + (row + 1) // 从r8c1开始这里就是8
const columnIndex = (i % 2) * 2 + 1
obj2[`r${rowIndex}c${columnIndex}`] = item.label
obj2[`r${rowIndex}c${columnIndex + 1}`] = item.value
// 页面中只渲染到了 r20c4
}
let obj3 = {
r50c1: '本箱数量',
r50c2: item.current_inventory,
r50c3: '本批数量',
r50c4: item.center_data[0]?.batch_count,
r51c1: '本工序',
r51c2: item.process_name,
r51c3: '下工序',
r51c4: item.next_process_name,
r52c1: '操作员',
r52c2: item.report_user_name,
r52c3: '生产日期',
r52c4: item.product_date,
r53c1: '检验员',
r53c2: item.center_data[0]?.inspector,
r53c3: '检验日期',
r53c4: item.center_data[0]?.inspect_time,
r54c1: '流转批次号',
r54c2: item.flow_lot_number,
r55c1: '备注',
r55c2: item.remark,
}
// 将 obj1, obj2, obj3 合并到obj的后面
Object.assign(obj, obj1, obj2, obj3)
}
// 为尚工厂-装配标识卡(为尚工厂无装配标识卡)
else if (
item.card_state == 'ZHUANGPEI' &&
item.is_finished_goods == 1
) {
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
}
}
// 成品工厂-料废标识卡
else if (
item.card_state == 'LIAOFEI' &&
item.is_finished_goods == 2
) {
// 如果有不良项目,就循环获取其中值
let badNum = item.bad_item_list?.length || 0
let badList: { id: number; label: string; value: string }[] = []
if (item.bad_item_list && badNum > 0) {
item.bad_item_list?.forEach((badItem: any) => {
let objbad = {
id: badItem.id,
label: badItem.content,
value: badItem.scrap_detail_number,
}
badList.push(objbad)
})
}
// 获取 badList[4] 以后项的 value 拼接成字符串
let badStr = badList
.slice(4)
.map((badItem: any) => {
let l = badItem.label
let v = badItem.value || ''
return l + ':' + v
})
.join(',')
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '料废标识卡',
r1c3: '产品类别',
r1c4: item.material_name,
r2c1: '物料编码',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path,
r3c1: '产品型号',
r3c2: item.material_model,
r4c1: '生产厂商',
r4c2: item.supplier_name,
r5c1: '材料厂商',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code,
r6c1: '采购单号',
r6c2: item.center_data[0]?.purchase_number,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '采购单行号',
r7c2: item.center_data[0]?.purchase_order,
r7c3: '材料批次',
r7c4: item.center_data[0]?.material_batch_number,
r8c1: '料废总数',
r8c2: item.storage_scrap_count,
r8c3: '生产日期',
r8c4: item.product_date,
r9c1: '工序',
r9c2: item.process_name,
r9c3: '规格',
r9c4: item.specification,
r10c1: '规值',
r10c2: item.value,
r10c3: '提交人',
r10c4: item.opt_user_name,
r11c1: '检验员',
r11c2: item.center_data[0]?.inspector,
r11c3: '检验日期',
r11c4: item.center_data[0]?.inspect_time,
r12c1: '热处理批号',
r12c2: item.center_data[0]?.heat_batch_number, // 热处理批号
r12c3: '工单号',
r12c4: item.wip_order_number, // 工单号
/** ----循环的数据-------------------------------- **/
r30c1: badList[0]?.label, // 渲染数组第0行的'建'
r30c2: badList[0]?.value, // 渲染数组第0行的'值'
r30c3: badList[1]?.label, // 渲染数组第1行的'建'
r30c4: badList[1]?.value, // 渲染数组第1行的'值'
r31c1: badList[2]?.label, // 渲染数组第2行的'建'
r31c2: badList[2]?.value, // 渲染数组第2行的'值'
r31c3: badList[3]?.label, // 渲染数组第3行的'建'
r31c4: badList[3]?.value, // 渲染数组第3行的'值'
r32c1: '其他', // 渲染数组第3行的'建'
r32c2: badStr, // 渲染数组第3行的'值'
r40c1: '备注', // 备注
r40c2: item.remark, // 备注
r41c1: item.center_data[0]?.b2b_batch_number, //条形码文本:只有批次序列号
}
}
// 为尚工厂-料废标识卡
else if (
item.card_state == 'LIAOFEI' &&
item.is_finished_goods == 1
) {
// 如果有不良项目,就循环获取其中值
let badNum = item.bad_item_list?.length || 0
let badList: { id: number; label: string; value: string }[] = []
if (item.bad_item_list && badNum > 0) {
item.bad_item_list?.forEach((badItem: any) => {
let objbad = {
id: badItem.id,
label: badItem.content,
value: badItem.scrap_detail_number,
}
badList.push(objbad)
})
}
// 获取 badList[4] 以后项的 value 拼接成字符串
let badStr = badList
// .slice(4)
.map((badItem: any) => {
let l = badItem.label
let v = badItem.value || ''
return l + ':' + v
})
.join(',')
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '料废标识卡',
r1c3: '产品类别',
r1c4: item.material_name, // 产品类别
r2c1: '分布场所代号',
r2c2: item.center_data[0]?.distribute_place_name,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '客户名称',
r3c2: item.customer_name || item.center_data[0]?.customer_name || '',
r4c1: '供应商',
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂家',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '淬火件型号',
r6c2: item.quenching_material_model,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '淬火件编码',
r7c2: item.quenching_material_code,
r7c3: '材料牌号',
r7c4: item.center_data[0]?.material_mark,
r8c1: '产品物料号',
r8c2: item.material_code,
r8c3: '库位',
r8c4: item.location_name,
r9c1: '产品型号',
r9c2: item.material_model,
r9c3: '收货人员',
r9c4: item.center_data[0]?.consignee,
r10c1: '料废总数',
r10c2: item.storage_scrap_count,
r10c3: '单重',
r10c4: item.piece_weight + item.piece_weight_unit,
r11c1: '工序',
r11c2: item.process_name,
r11c3: '本批数量',
r11c4: item.center_data[0]?.batch_count,
r12c1: '生产日期',
r12c2: item.product_date,
r12c3: '提交人',
r12c4: item.opt_user_name,
/** ----循环的数据---------------- **/
r30c1: '不良项目',
r30c2: badStr, // 渲染数组不良项目的'值'
r40c1: '备注',
r40c2: item.remark, // 备注
r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本
}
}
// (成品工厂-为尚工厂)-账物卡
else if (item.card_state == 'ZHANGWU') {
// 如果有不良项目,就循环获取其中值
// 获取 badList[4] 以后项的 value 拼接成字符串
obj = {
card_state: item.card_state,
factoryType: item.is_finished_goods, // 工厂类型:1:为尚工厂 | 2:成品工厂
r1c2: '账物卡',
r1c3: '部件类型',
r1c4: item.material_name,
r2c1: '产品编码',
r2c2: item.material_name
? item.material_name + '/' + item.material_type
: item.material_type,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '产品型号',
r3c2: item.material_model,
r4c1: '批次序列号',
r4c2: item.center_data[0]?.b2b_batch_number,
r5c1: '生产厂商',
r5c2: item.center_data[0]?.supplier_name,
r5c4: item.card_code, // 标识卡号
r6c1: '材料厂商',
r6c2: item.center_data[0]?.material_manufacturer,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '规值',
r7c2: item.value,
r7c3: '材料批次',
r7c4: item.center_data[0]?.material_batch_number,
data: [
{
opt_time: item.opt_time, // 日期
sr: item.record_type === 1 ? item.inventory : '', // 收入
fc: item.record_type === 2 ? item.inventory : '', // 发出
balance_count: item.balance_count, //结存
remark: item.remark, // 签字/备注
},
],
r41c1: item.flow_lot_number
? item.flow_lot_number
: item.center_data[0]?.b2b_batch_number || '', //条形码文本
}
}
// 成品工厂-毛坯标识卡
else if (item.card_state == 'MAOPI' && item.is_finished_goods == 2) {
obj = {
card_state: item.card_state, // 标识卡类型
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '毛坯标识卡',
r1c3: '产品类别',
r1c4: item.material_name,
r2c1: '物料编码',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '产品型号',
r3c2: item.material_model,
r4c1: '供应商',
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂商',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '本箱数量',
r6c2: item.current_inventory,
r6c3: '生产日期',
r6c4: item.product_date,
r7c1: '检验员',
r7c2: item.center_data[0]?.inspector,
r7c3: '检验日期',
r7c4: item.center_data[0]?.inspect_time,
r8c1: '材料炉号',
r8c2: item.center_data[0]?.material_heat_number,
r8c3: '材料批次',
r8c4: item.center_data[0]?.material_batch_number,
r9c1: '本批数量',
r9c2: item.center_data[0]?.batch_count,
r9c3: '件数规格',
r9c4: item.center_data[0]?.case_count_str,
r10c1: '规值',
r10c2: item.value,
r10c3: '采购单号',
r10c4: item.center_data[0]?.purchase_number,
r11c1: '批次序列号',
r11c2: item.center_data[0]?.b2b_batch_number,
r11c3: '采购单行号',
r11c4: item.center_data[0]?.purchase_order,
r12c1: '热处理批号',
r12c2: item.center_data[0]?.heat_batch_number,
r40c1: '备注', // 备注
r40c2: item.remark, // 备注
r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本
}
}
// 为尚工厂-毛坯标识卡
else if (item.card_state == 'MAOPI' && item.is_finished_goods == 1) {
obj = {
card_state: item.card_state,
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '毛坯标识卡',
r1c3: '产品类别',
r1c4: item.material_name,
r2c1: '分布场所代号',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '客户名称',
r3c2: item.customer_name || item.center_data[0]?.customer_name || '',
r4c1: '供应商',
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂家',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '淬火件型号',
r6c2: item.quenching_material_model,
r6c3: '材料炉号',
r6c4: item.center_data[0]?.material_heat_number,
r7c1: '淬火件编码',
r7c2: item.quenching_material_code,
r7c3: '材料牌号',
r7c4: item.center_data[0]?.material_mark,
r8c1: '产品物料号',
r8c2: item.material_code,
r8c3: '收货人员',
r8c4: item.center_data[0]?.consignee,
r9c1: '产品型号',
r9c2: item.material_model,
r9c3: '本批数量',
r9c4: item.center_data[0]?.batch_count,
r10c1: '本箱数量',
r10c2: item.current_inventory,
r10c3: '单重',
r10c4: item.piece_weight + item.piece_weight_unit,
r11c1: '总箱数',
r11c2: item.total_row,
r11c3: '净重',
r11c4: item.net_weight + item.net_weight_unit,
r12c1: '包装方式',
r12c2: item.packaging_specifications_name,
r12c3: '生产日期',
r12c4: item.product_date,
r13c1: '件数规格',
r13c2: item.center_data[0]?.case_count_str,
r13c3: '',
r13c4: '',
r40c1: '备注',
r40c2: item.remark, // 备注
r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本
}
}
// 成品工厂-材料标识卡
else if (
item.card_state == 'CAILIAO' &&
item.is_finished_goods == 2
) {
obj = {
card_state: item.card_state, // 标识卡类型
// 工厂类型:1:为尚工厂 | 2:成品工厂
factoryType: item.is_finished_goods,
r1c2: '材料标识卡',
r1c3: '产品类别',
r1c4: item.material_name,
r2c1: '物料编码',
r2c2: item.material_code,
r2c4: baseUrls + item.qr_code_path, // 二维码地址
r3c1: '产品型号',
r3c2: item.material_model,
r4c1: '供应商',
r4c2: item.center_data[0]?.supplier_name,
r5c1: '材料厂商',
r5c2: item.center_data[0]?.material_manufacturer,
r5c4: item.card_code, // 标识卡号
r6c1: '本箱数量',
r6c2: item.current_inventory,
r6c3: '生产日期',
r6c4: item.product_date,
r7c1: '检验员',
r7c2: item.center_data[0]?.inspector,
r7c3: '检验日期',
r7c4: item.center_data[0]?.inspect_time,
r8c1: '材料炉号',
r8c2: item.center_data[0]?.material_heat_number,
r8c3: '材料批次',
r8c4: item.center_data[0]?.material_batch_number,
r9c1: '本批数量',
r9c2: item.center_data[0]?.batch_count,
r9c3: '件数规格',
r9c4: item.center_data[0]?.case_count_str,
r10c1: '规值',
r10c2: item.value,
r10c3: '采购单号',
r10c4: item.center_data[0]?.purchase_number,
r11c1: '采购单行号',
r11c2: item.center_data[0]?.purchase_order,
r40c1: '备注', // 备注
r40c2: item.remark, // 备注
r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本
}
}
// 为尚工厂-材料标识卡(为尚工厂无材料标识卡)
else if (
item.card_state == 'CAILIAO' &&
item.is_finished_goods == 1
) {
obj = {
card_state: item.card_state,
factoryType: item.is_finished_goods, // 工厂类型:1:为尚工厂 | 2:成品工厂
}
}
// 为尚工厂无:尾料标识卡、装配标识卡、材料标识卡
dataInfo.push(obj)
})
console.log('处理好的标识卡信息:', dataInfo)
callback(dataInfo)
})
.catch((err: any) => {
console.log('错误: ', err)
callback([])
})
}
// 处理选中的标识卡为需要的参数结构
export function setCardList(rowList: any) {
let cParams: any = {
card_code: [],
}
rowList.forEach((item: any) => {
item.SRow.forEach((row: any) => {
cParams.card_code.push(row.card_code)
})
cParams.card_code = Array.from(new Set(cParams.card_code))
cParams.card_code = cParams.card_code.map((item: any) => item.toString())
cParams.card_code = cParams.card_code.map((item: any) => item.trim())
})
cParams.card_code = cParams.card_code.join(',')
return cParams
}