UNPKG

ci-plus

Version:

ci组件库

1,235 lines (1,190 loc) 53.4 kB
/** * @module cardPrint * @author : 卖女孩的小火柴 * ?description : 11月22日开会重新更新成品工厂标识卡 * !@version : 1.6.1 * TODO:@since : 创建时间 2024-11-23 09:40:30 * !update : 2025-03-13 调整生产日期字段取值 */ import { ElMessage, MessageParamsWithType } from 'element-plus' import apis from './baseApi' import axios from 'axios' 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)) const setInspect_status = (val: number | string | undefined) => { if (val == 0) { return { type: 'info', value: '未生成任务' } } else if (val == 1) { return { type: 'info', value: '待检验' } } else if (val == 2) { return { type: 'success', value: '合格' } } else if (val === 3) { return { type: 'info', value: '不合格' } } else if (val === 4) { return { type: 'warning', value: '待评审' } } else if (val === 5) { return { type: 'danger', value: '挑选使用' } } else if (val === 6) { return { type: 'danger', value: '让步接收' } } else if (val === 7) { return { type: 'danger', value: '退货' } } else { return { type: '', value: '' } } } 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.5.7') 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 = {} let weight1 = item.net_weight ? item.net_weight : '' let weight_unit1 = item.net_weight_unit ? item.net_weight_unit : '' let net_weight = weight1 ? weight1 + weight_unit1 : '' // 净重+净重单位 let weight2 = item.piece_weight ? item.piece_weight : '' let weight_unit2 = item.piece_weight_unit ? item.piece_weight_unit : '' let piece_weight = weight2 ? weight2 + weight_unit2 : '' // 单重+单重单位 // 成品工厂-产品标识卡 if (item.card_state == 'CHANPIN' && 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.wip_order_number, r5c4: item.card_code, // 标识卡号 r6c1: '本工序', r6c2: item.process_name, r6c3: '下工序', r6c4: item.next_process_name, r7c1: '本箱数量', r7c2: item.current_inventory, r7c3: '操作工/自检员', r7c4: item.report_user_name ? item.report_user_name : item.opt_user_name, r8c1: '本批数量', r8c2: item.center_data[0]?.batch_count, r8c3: '生产日期', r8c4: item.product_date ? item.product_date : item.center_data?.[0]?.product_date, r9c1: '规值', r9c2: item.value, r9c3: '材料厂商', r9c4: item.center_data[0]?.material_manufacturer, r10c1: '检验员', r10c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r10c3: '材料炉号', r10c4: item.center_data[0]?.material_heat_number, r11c1: '检验日期', r11c2: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, r11c3: '热处理批号', r11c4: item.center_data[0]?.heat_batch_number, r12c1: '流转批次号', r12c2: item.flow_lot_number, r12c3: '', //'采购单号', r12c4: '', //item.center_data[0]?.purchase_number, r13c1: '批次序列号', r13c2: item.center_data[0]?.b2b_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 == '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: net_weight, r10c3: '单重', r10c4: piece_weight, 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 ? item.product_date : item.center_data?.[0]?.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: '尾料标识卡', 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]?.tail_reason, r5c4: item.card_code, // 标识卡号 r6c1: '本工序', r6c2: item.process_name, r6c3: '下工序', r6c4: item.next_process_name, r7c1: '规值', r7c2: item.value, r7c3: '操作工/自检员', r7c4: item.report_user_name ? item.report_user_name : item.opt_user_name, // 操作工/自检员 r8c1: '本箱数量', r8c2: item.current_inventory, // 本箱数量 r8c3: '生产日期', r8c4: item.product_date ? item.product_date : item.center_data?.[0]?.product_date, // 生产日期 r9c1: '本批数量', r9c2: item.center_data[0]?.batch_count, r9c3: '材料厂商', r9c4: item.center_data[0]?.material_manufacturer, r10c1: '检验员', r10c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r10c3: '材料炉号', r10c4: item.center_data[0]?.material_heat_number, r11c1: '检验日期', r11c2: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, r11c3: '热处理批号', r11c4: item.center_data[0]?.heat_batch_number, r12c1: '工单号', r12c2: item.wip_order_number, r12c3: '采购单号', r12c4: item.center_data[0]?.purchase_number, r13c1: '批次序列号', r13c2: item.center_data[0]?.b2b_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 == 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 ? item.product_date : item.center_data?.[0]?.product_date, // 生产日期 r7c1: '规值', // 规值 r7c2: item.value, // 规值 r7c3: '规格', // 规格 r7c4: item.specification, // 规格 r8c1: '提交人', // 提交人 r8c2: item.opt_user_name, // 提交人 r8c3: '责任人', // 责任人 r8c4: item.duty_user_name, // 责任人 r9c1: '检验员', r9c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r9c3: '检验日期', r9c4: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, r10c1: '本箱数量', r10c2: item.current_inventory, r10c3: '材料炉号', r10c4: item.center_data[0]?.material_heat_number, /** ----循环的数据-------------------------------- **/ r11c1: badList[0]?.label, // 渲染数组第0行的'建' r11c2: badList[0]?.value, // 渲染数组第0行的'值' r11c3: badList[1]?.label, // 渲染数组第1行的'建' r11c4: badList[1]?.value, // 渲染数组第1行的'值' r12c1: badList[2]?.label, // 渲染数组第2行的'建' r12c2: badList[2]?.value, // 渲染数组第2行的'值' r12c3: badList[3]?.label, // 渲染数组第3行的'建' r12c4: badList[3]?.value, // 渲染数组第3行的'值' // r11c1: badList[4]?.label,// 渲染数组第4行的'建' // r11c2: badList[4]?.value, // 渲染数组第4行的'值' r13c1: '其他', // 渲染数组第5及以后行的'建' r13c2: badStr, // 渲染数组第5及以后行的'值' r14c1: '流转批次号', r14c2: item.flow_lot_number, r14c3: '批次序列号', r14c4: item.center_data[0]?.b2b_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: piece_weight, 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 ? item.product_date : item.center_data?.[0]?.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.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.product_date ? item.product_date : item.center_data?.[0]?.product_date, r8c1: '检验员', r8c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r8c3: '检验日期', r8c4: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, r9c1: '责任团队', r9c2: item.duty_team_name, r9c3: '返工期限', r9c4: item.rework_dead_line, r10c1: '处理团队', r10c2: item.deal_team_name, r10c3: '处理方法', r10c4: item.handling_method, r11c1: '流转批次号', r11c2: item.flow_lot_number, r11c3: '批次序列号', r11c4: item.center_data[0]?.b2b_batch_number, // r12c1: '采购单号', // r12c2: item.center_data[0]?.purchase_number, /** ----循环的数据---------------- **/ 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 ? item.product_date : item.center_data?.[0]?.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) { // 检验结果/检验状态 let status = item.inspect_status ? item.inspect_status : item.center_data[0]?.inspect_status let inspectStatus = setInspect_status(status).value // 如果有children ,就循环获取其中值 let badNum = item.children?.length || 0 let badList: { id: number | string label: string value: string }[] = [] // 套圈的编码和批号数组 let tqList: { id: number | string label: string value: string }[] = [] let nqbm = '' // 内圈编码 let nqph = '' // 内圈批号 let wqbm = '' // 内圈编码 let wqph = '' // 内圈批号 let tqbm = '' // 内圈编码 let tqph = '' // 内圈批号 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 if (badItem.category == '套圈') { tqbm = badItem.material_code || '' tqph = badItem.b2b_batch_number || '' let tqbmobj = { id: badItem.card_code + 'bm', label: badItem.category + '编码', value: tqbm } let tqphobj = { id: badItem.card_code + 'ph', label: badItem.category + '批号', value: tqph } if (badItem.category) { tqList.push(tqbmobj) tqList.push(tqphobj) } } 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: wqph, r7c1: '内圈编码', r7c2: nqbm, r7c3: '内圈批号', r7c4: nqph } // 获取obj1最后一条属性的行号列号 // 获取obj1最后一条属性 let lastKey = Object.keys(obj1)[Object.keys(obj1).length - 1] console.log('%c Line:691 🎂 lastKey', 'color:#ffdd4d', lastKey) // 获取行号 let row = Number(parseInt(lastKey.split('r')[1].split('c')[0])) // 获取列号 let column = Number(lastKey.split('c')[1]) //------- // 通过循环 tqList 数组,将数组中的每一项合并到obj中 console.log('%c Line:699 🍰 套圈数组', 'color:#ed9ec7', tqList) let obj4: any = {} if (tqList.length > 0) { for (let i = 0; i < tqList.length; i++) { const item = tqList[i] console.log('%c Line:703 🌰 item', 'color:#ffdd4d', item) const rowIndex = Math.floor(i / 2) + (row + 1) // 从r8c1开始这里就是8 const columnIndex = (i % 2) * 2 + 1 obj4[`r${rowIndex}c${columnIndex}`] = item.label obj4[`r${rowIndex}c${columnIndex + 1}`] = item.value } } console.log('%c Line:709 🌭 obj4', 'color:#42b983', obj4) //------- // 获取obj4最后一条属性 let lastKey4 = lastKey if (Object.keys(obj4).length > 0) { lastKey4 = Object.keys(obj4)[Object.keys(obj4).length - 1] } console.log('%c Line:714 🍻 lastKey4', 'color:#6ec1c2', lastKey4) // 获取行号 let row4 = Number(parseInt(lastKey4.split('r')[1].split('c')[0])) // 通过循环 badList 数组,将数组中的每一项合并到obj中 let obj2: any = {} for (let i = 0; i < badList.length; i++) { const item = badList[i] const rowIndex = Math.floor(i / 2) + (row4 + 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 } console.log('%c Line:728 🥓 obj2', 'color:#465975', obj2) let obj3 = { r50c1: '本箱数量', r50c2: item.current_inventory, r50c3: '本批数量', r50c4: item.batch_count ? item.batch_count : 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 ? item.product_date : item.center_data?.[0]?.product_date, r53c1: '检验员', r53c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r53c3: '检验日期', r53c4: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, r54c1: '流转批次号', r54c2: item.flow_lot_number, r54c3: '检验结果', r54c4: inspectStatus, r55c1: '备注', r55c2: item.remark } // obj1, obj2, obj3 合并到obj的后面 Object.assign(obj, obj1, obj4, 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.wip_order_number, r5c4: item.card_code, r6c1: '工序', r6c2: item.process_name, r6c3: '提交人', r6c4: item.opt_user_name, r7c1: '规值', r7c2: item.value, r7c3: '生产日期', r7c4: item.product_date ? item.product_date : item.center_data?.[0]?.product_date, r8c1: '料废总数', r8c2: item.storage_scrap_count, r8c3: '材料厂商', r8c4: item.center_data[0]?.material_manufacturer, r9c1: '检验员', r9c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r9c3: '材料炉号', r9c4: item.center_data[0]?.material_heat_number, r10c1: '检验日期', r10c2: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, r10c3: '热处理批号', r10c4: item.center_data[0]?.heat_batch_number, r11c1: '采购单号', r11c2: item.center_data[0]?.purchase_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: piece_weight, r11c1: '工序', r11c2: item.process_name, r11c3: '本批数量', r11c4: item.center_data[0]?.batch_count, r12c1: '生产日期', r12c2: item.product_date ? item.product_date : item.center_data?.[0]?.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, 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.inspector ? item.inspector : item.center_data[0]?.inspector, r7c3: '检验日期', r7c4: item.inspect_time ? item.inspect_time : 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: '', r12c1: '热处理批号', r12c2: item.center_data[0]?.heat_batch_number, r12c3: '', r12c4: '', r40c1: '备注', // 备注 r40c2: item.remark, // 备注key r41c1: item.center_data[0]?.b2b_batch_number || '', //条形码文本666 } */ // 使用为尚产品标识卡的模板数据 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: net_weight, r10c3: '单重', r10c4: piece_weight, 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 ? item.product_date : item.center_data?.[0]?.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 == '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: piece_weight, r11c1: '总箱数', r11c2: item.total_row, r11c3: '净重', r11c4: net_weight, r12c1: '包装方式', r12c2: item.packaging_specifications_name, r12c3: '生产日期', r12c4: item.product_date ? item.product_date : item.center_data?.[0]?.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.value, r6c3: '生产日期', r6c4: item.product_date ? item.product_date : item.center_data?.[0]?.product_date, r7c1: '本箱数量', r7c2: item.current_inventory, r7c3: '件数规格', r7c4: item.center_data[0]?.case_count_str, r8c1: '本批数量', r8c2: item.center_data[0]?.batch_count, r8c3: '材料炉号', r8c4: item.center_data[0]?.material_heat_number, r9c1: '检验员', r9c2: item.inspector ? item.inspector : item.center_data[0]?.inspector, r9c3: '采购单号', r9c4: item.center_data[0]?.purchase_number, r10c1: '检验日期', r10c2: item.inspect_time ? item.inspect_time : item.center_data[0]?.inspect_time, 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 }