|
|
|
|
@ -1,7 +1,8 @@ |
|
|
|
|
<template> |
|
|
|
|
<el-dialog title="打印预览" append-to-body :modelValue="showPrint" fullscreen width="85%" |
|
|
|
|
@close="closeDialog" :custom-class="isPrint ? 'noprint' : 'rbdyBox'"> |
|
|
|
|
<el-button @click="printData" type="primary" class="printButton no-print">打 印</el-button> |
|
|
|
|
<!-- @click="printData" --> |
|
|
|
|
<el-button v-print="printConfig" type="primary" class="printButton no-print">打 印</el-button> |
|
|
|
|
<div v-loading="loading" id="printMe" ref="printContent" class="printBox"> |
|
|
|
|
<!-- <div class="printTitle"> |
|
|
|
|
<div style="text-align:left;">JONHON受控</div> |
|
|
|
|
@ -11,135 +12,137 @@ |
|
|
|
|
<div class="printTitle">热表分厂质量记录卡</div> |
|
|
|
|
<div class="tableNo">表号:</div> |
|
|
|
|
<table id="cus-table" cellspacing="0" style="width:100%"> |
|
|
|
|
<template v-if="checkedList[0] && modelOne!= null && modelOne.wo != null"> |
|
|
|
|
<!-- <tr> |
|
|
|
|
<td>订单号</td> |
|
|
|
|
<td colspan="4">{{ modelOne.wo.woCode || '/' }}</td> |
|
|
|
|
<td>使用部门</td> |
|
|
|
|
<td colspan="3">{{ modelOne.wo.pjYieldOrder.useDept || '/' }}</td> |
|
|
|
|
<td>单位</td> |
|
|
|
|
<td colspan="2">3400</td> |
|
|
|
|
</tr> --> |
|
|
|
|
<template v-if="modelOne!= null && modelOne.dsPart!= null"> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">零件号</td> |
|
|
|
|
<td colspan="4">21E8-570-1122-L36</td> |
|
|
|
|
<td colspan="2">{{modelOne.dsPart.partCode || '/'}}</td> |
|
|
|
|
<td colspan="1">产品型号</td> |
|
|
|
|
<td colspan="3">{{ modelOne.wo.pjYieldOrder.productType || '/' }}</td> |
|
|
|
|
<td colspan="2">{{ modelOne.dsPart.productType || '/' }}</td> |
|
|
|
|
<td colspan="1">生产标识</td> |
|
|
|
|
<td colspan="2">JHT</td> |
|
|
|
|
<td colspan="2">{{modelOne.dsPart.prodIdent || '/'}}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">批次号</td> |
|
|
|
|
<td colspan="4">Y1702506402</td> |
|
|
|
|
<td colspan="2">{{modelOne.dsPart.batchNo || '/'}}</td> |
|
|
|
|
<td colspan="1">名称</td> |
|
|
|
|
<td colspan="3">Φ5.5焊杯插针</td> |
|
|
|
|
<td colspan="2">{{modelOne.dsPart.partName || '/'}}</td> |
|
|
|
|
<td colspan="1">数量</td> |
|
|
|
|
<td colspan="2">{{ modelOne.wo.pjYieldOrder.poQty || '/' }}</td> |
|
|
|
|
<td colspan="2">{{ modelOne.dsPart.qty || '/' }}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">硬度</td> |
|
|
|
|
<td colspan="8">111</td> |
|
|
|
|
<td colspan="5">{{modelOne.dsPart.hardness || '/'}}</td> |
|
|
|
|
<td colspan="1">零件面积(dm²)</td> |
|
|
|
|
<td colspan="3">{{ modelOne.wo.pjYieldOrder.poArea || '/' }}</td> |
|
|
|
|
<td colspan="2">{{ modelOne.dsPart.area || '/' }}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">镀种</td> |
|
|
|
|
<td colspan="8">{{ modelOne.wo.pjYieldOrder.plate || '/' }}</td> |
|
|
|
|
<td colspan="5">{{ modelOne.dsPart.plate || '/' }}</td> |
|
|
|
|
<td colspan="1">材料</td> |
|
|
|
|
<td colspan="3">{{ '' || '/' }}</td> |
|
|
|
|
<td colspan="2">{{ modelOne.dsPart.material || '/' }}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">工艺路线</td> |
|
|
|
|
<td colspan="11">{{ modelOne.wo.pjYieldOrder.primaryCraft || '/' }}</td> |
|
|
|
|
<td colspan="8">{{ modelOne.dsPart.craftWay || '/' }}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">质量信息</td> |
|
|
|
|
<td colspan="11">{{ ( modelOne.dsPart.cruxMemo? modelOne.dsPart.cruxMemo :'' +' '+ modelOne.dsPart.memo?modelOne.dsPart.memo:'') || '/' }}</td> |
|
|
|
|
<td colspan="8">{{ modelOne.dsPart.keyInfo || '/' }}</td> |
|
|
|
|
</tr> |
|
|
|
|
</template> |
|
|
|
|
<template v-if="modelTwo && modelTwo.length>0"> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="12" style="font-size:21px;font-weight:550;">生产过程</td> |
|
|
|
|
<td colspan="9" style="font-size:21px;">生产过程</td> |
|
|
|
|
</tr> |
|
|
|
|
<template v-for="(item,index) in modelTwo" > |
|
|
|
|
<tr v-if="index != 0" style="height: 20px;"></tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="12" style="font-size:16px;font-weight:550;"> |
|
|
|
|
<td colspan="9" style="font-size:16px;"> |
|
|
|
|
{{item.orders}} - {{item.ppsName}} 工序详情 |
|
|
|
|
</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-if="item.selfInspection && JSON.stringify(item.selfInspection) != '{}'"> |
|
|
|
|
<td colspan="1">自检</td> |
|
|
|
|
<td colspan="5">{{item.selfInspection.content}}</td> |
|
|
|
|
<td colspan="3">结论</td> |
|
|
|
|
<td colspan="4">{{item.selfInspection.content}}</td> |
|
|
|
|
<td colspan="1">结论</td> |
|
|
|
|
<td colspan="3">{{item.selfInspection.conclusion}}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="6">工艺文件编号/版本号</td> |
|
|
|
|
<td colspan="6">010-01796589/Q</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="6">CPS文件编号/版本号</td> |
|
|
|
|
<td colspan="6">/</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-if="item.Hanger"> |
|
|
|
|
<template v-if="item.auditFile && JSON.stringify(item.auditFile) != '{}'"> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="5">工艺文件编号/版本号</td> |
|
|
|
|
<td colspan="4">{{item.auditFile.papers || '/'}}</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="5">CPS文件编号/版本号</td> |
|
|
|
|
<td colspan="4">{{item.auditFile.referenceFile || '/'}}</td> |
|
|
|
|
</tr> |
|
|
|
|
</template> |
|
|
|
|
<tr v-if="(item.gjCode && !item.fbCode && !item.deviceCode) || item.fbCode"> |
|
|
|
|
<td colspan="1">操作者</td> |
|
|
|
|
<td colspan="2">李新乐</td> |
|
|
|
|
<td colspan="1">挂具编号</td> |
|
|
|
|
<td colspan="2">GDAU</td> |
|
|
|
|
<td colspan="3">检验员确认</td> |
|
|
|
|
<td colspan="3">曹鹏飞/2025-06-28</td> |
|
|
|
|
<td colspan="1">{{item.createMan || '/'}}</td> |
|
|
|
|
<td colspan="1" v-if="item.gjCode && !item.fbCode && !item.deviceCode ">挂具编号</td> |
|
|
|
|
<td colspan="1" v-if="item.gjCode && !item.fbCode && !item.deviceCode">{{item.gjCode || '/'}}</td> |
|
|
|
|
<td colspan="1" v-if="item.fbCode">飞拔编号</td> |
|
|
|
|
<td colspan="1" v-if="item.fbCode">{{item.fbCode || '/'}}</td> |
|
|
|
|
<td colspan="1" v-if="item.procedureSet.ppsName=='荧光检测'"> |
|
|
|
|
{{ (item.procedureSet.ppsName.indexOf('检验') != -1 || item.procedureSet.ppsName == '镀后接收') ? '/' : '检验员确认' }} |
|
|
|
|
</td> |
|
|
|
|
<td colspan="4" v-if="item.procedureSet.ppsName=='荧光检测'">曹鹏飞/2025-06-28</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">操作者</td> |
|
|
|
|
<td colspan="5">李新乐</td> |
|
|
|
|
<td colspan="3">检验员确认</td> |
|
|
|
|
<td colspan="3">曹鹏飞/2025-06-28</td> |
|
|
|
|
<tr v-else> |
|
|
|
|
<td :colspan="!item.jyy ? '4' : '1'">操作者</td> |
|
|
|
|
<td :colspan="!item.jyy ? '5' : '4'">{{item.createMan || '/'}}</td> |
|
|
|
|
<td colspan="1" v-if="item.procedureSet.ppsName=='荧光检测'"> |
|
|
|
|
{{ (item.procedureSet.ppsName.indexOf('检验') != -1 || item.procedureSet.ppsName == '镀后接收') ? '/' : '检验员确认' }} |
|
|
|
|
</td> |
|
|
|
|
<td colspan="3" v-if="item.procedureSet.ppsName=='荧光检测'">曹鹏飞/2025-06-28</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-if="item.deviceCode && item.deviceCode != ''"> |
|
|
|
|
<tr v-if="item.deviceCode && item.deviceCode != ''"> |
|
|
|
|
<td colspan="1">设备编号</td> |
|
|
|
|
<td colspan="5">9652249</td> |
|
|
|
|
<td colspan="3">有效期</td> |
|
|
|
|
<td colspan="4">{{item.deviceCode || '/'}}</td> |
|
|
|
|
<td colspan="1">有效期</td> |
|
|
|
|
<td colspan="3"></td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-if="item.tankInfo && JSON.stringify(item.tankInfo) != {}"> |
|
|
|
|
<td colspan="12" >同槽信息</td> |
|
|
|
|
<td colspan="9" >同槽信息</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-if="item.tankInfo && JSON.stringify(item.tankInfo) != {}"> |
|
|
|
|
<tr v-if="item.tankInfo && JSON.stringify(item.tankInfo) != {}"> |
|
|
|
|
<td colspan="1">掺镀件面积(dm²)</td> |
|
|
|
|
<td colspan="3">{{item.tankInfo.cdjArea}}</td> |
|
|
|
|
<td colspan="1">陪镀件面积(dm²)</td> |
|
|
|
|
<td colspan="2">{{item.tankInfo.cdjArea}}</td> |
|
|
|
|
<td colspan="1">陪镀件面积(dm²)</td> |
|
|
|
|
<td colspan="1">{{item.tankInfo.pdjArea}}</td> |
|
|
|
|
<td colspan="1">挂具面积(dm²)</td> |
|
|
|
|
<td colspan="4">{{item.tankInfo.cdjArea}}</td> |
|
|
|
|
<td colspan="3">{{item.tankInfo.gjArea}}</td> |
|
|
|
|
</tr> |
|
|
|
|
<template v-if="item.tankInfo && JSON.stringify(item.tankInfo) != {} && item.tankInfo.tankData && item.tankInfo.tankData.length != 0"> |
|
|
|
|
<template v-if="item.tankInfo && JSON.stringify(item.tankInfo) != {} && item.tankInfo.slotList && item.tankInfo.slotList.length != 0"> |
|
|
|
|
<tr> |
|
|
|
|
<td colspan="1">同槽编号</td> |
|
|
|
|
<td colspan="3">零件号</td> |
|
|
|
|
<td colspan="2">批次号</td> |
|
|
|
|
<td colspan="2">零件号</td> |
|
|
|
|
<td colspan="1">批次号</td> |
|
|
|
|
<td>数量</td> |
|
|
|
|
<td>生产标识</td> |
|
|
|
|
<td>面积(dm²)</td> |
|
|
|
|
<td colspan="2">总面积(dm²)</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr v-for="(slot,index) in item.tankInfo.tankData"> |
|
|
|
|
<td v-if="index === 0" :rowspan="item.tankInfo.tankData.length">{{slot.slotNo}}</td> |
|
|
|
|
<td colspan="3">{{slot.partCode}}</td> |
|
|
|
|
<td colspan="2">{{slot.batchNo}}</td> |
|
|
|
|
<td >{{slot.count || '/'}}</td> |
|
|
|
|
<td >{{slot.count || '/'}}</td> |
|
|
|
|
<td >{{slot.area || '/'}}</td> |
|
|
|
|
<td v-if="index === 0" :rowspan="item.tankInfo.tankData.length" colspan="2">{{slot.totalArea || '/'}}</td> |
|
|
|
|
<tr v-for="(slot,index) in item.tankInfo.slotList"> |
|
|
|
|
<td v-if="index === 0" :rowspan="item.tankInfo.slotList.length">{{slot.mtnCode || '/'}}</td> |
|
|
|
|
<td v-if="!slot.cdj" colspan="2">{{slot.partCode || '/'}}</td> |
|
|
|
|
<td v-if="!slot.cdj" colspan="1">{{slot.batchNo || '/'}}</td> |
|
|
|
|
<td v-if="!slot.cdj" >{{slot.workQty || '/'}}</td> |
|
|
|
|
<td v-if="!slot.cdj" >{{slot.prodIdent || '/'}}</td> |
|
|
|
|
<td v-if="!slot.cdj" >{{slot.area || '/'}}</td> |
|
|
|
|
<td v-if="slot.cdj" colspan="5">{{slot.cdj}}</td> |
|
|
|
|
<td v-if="slot.cdj">{{slot.cdjArea}}</td> |
|
|
|
|
<td v-if="index === 0" :rowspan="item.tankInfo.slotList.length" colspan="2">{{slot.sumArea || '/'}}</td> |
|
|
|
|
</tr> |
|
|
|
|
</template> |
|
|
|
|
<template v-if="item.slotPosition && item.slotPosition.length != 0"> |
|
|
|
|
<template v-if="item.dsRbFilePreserveSlotList && item.dsRbFilePreserveSlotList.length>0"> |
|
|
|
|
<tr > |
|
|
|
|
<td colspan="1">槽位/工步</td> |
|
|
|
|
<td colspan="5">工艺要求</td> |
|
|
|
|
<td colspan="5">实际参数</td> |
|
|
|
|
<td colspan="4">工艺要求</td> |
|
|
|
|
<td colspan="4">实际参数</td> |
|
|
|
|
</tr> |
|
|
|
|
<template v-for="(itemSlot, indexSlot) in item.slotPosition" :key="itemSlot.slotName + indexSlot"> |
|
|
|
|
<template v-for="(itemSlot, indexSlot) in item.dsRbFilePreserveSlotList" :key="itemSlot.slotName + indexSlot"> |
|
|
|
|
<component |
|
|
|
|
:is="getTemplateComponent(itemSlot.rfpsType)" |
|
|
|
|
:itemSlot="itemSlot" |
|
|
|
|
@ -165,7 +168,7 @@ |
|
|
|
|
import {getWordDetail} from '@/api/qualityManagement/inspectionArchiving/eRecord' |
|
|
|
|
import Templates from "@/views/qualityTemplate/index.js"; |
|
|
|
|
import { getTemplateComponent } from '@/utils/templateMapper.js'; |
|
|
|
|
import { exportEchartsToPdf } from '@/utils/exportPdf'; // 引入工具函数 |
|
|
|
|
import printOrderJson from './printOrder.json'; |
|
|
|
|
export default { |
|
|
|
|
props:{ |
|
|
|
|
showPrint: { |
|
|
|
|
@ -202,6 +205,14 @@ export default { |
|
|
|
|
// console.log(e, 5555); |
|
|
|
|
// } |
|
|
|
|
// }, |
|
|
|
|
printConfig :{ |
|
|
|
|
id: 'printMe', |
|
|
|
|
extraCss: 'https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css', |
|
|
|
|
extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>', |
|
|
|
|
// preview: true, |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
dsPart:{}, |
|
|
|
|
modelOne: { |
|
|
|
|
wo: { pjYieldOrder: {}}, |
|
|
|
|
checkList: [], |
|
|
|
|
@ -225,12 +236,50 @@ export default { |
|
|
|
|
{ |
|
|
|
|
orders: '0010',ppsName:'清洗', |
|
|
|
|
deviceCode:"9652249", |
|
|
|
|
slotPosition:[ |
|
|
|
|
qcProduceRunsList:[ |
|
|
|
|
// { |
|
|
|
|
// insertIndex: "1", |
|
|
|
|
// rfpsType: 2, |
|
|
|
|
// // slotIndex: "1", |
|
|
|
|
// slotName: "超声波除油", |
|
|
|
|
// childrenList:[ |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2025/06/28 09:00:49" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "2", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "结束", |
|
|
|
|
// "paramValue": "2025/06/28 09:30:49" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "2", |
|
|
|
|
// "detailName": "温度(℃)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "40~60", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "参数名称1", |
|
|
|
|
// "paramValue": "55" |
|
|
|
|
// }, |
|
|
|
|
// ] |
|
|
|
|
// }, |
|
|
|
|
{ |
|
|
|
|
insertIndex: "1", |
|
|
|
|
rfpsType: 2, |
|
|
|
|
rfpsType:22, |
|
|
|
|
// slotIndex: "1", |
|
|
|
|
slotName: "超声波除油", |
|
|
|
|
slotName: "自来水洗", |
|
|
|
|
childrenList:[ |
|
|
|
|
{ |
|
|
|
|
"rfpsId": "1", |
|
|
|
|
@ -240,50 +289,123 @@ export default { |
|
|
|
|
"rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
"qualified": "合格", |
|
|
|
|
"paramName": "开始", |
|
|
|
|
"paramValue": "2025/06/28 09:00:49" |
|
|
|
|
"paramValue": "2" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"rfpsId": "1", |
|
|
|
|
"detailName": "时间(min)", |
|
|
|
|
"detailIndex": "1", |
|
|
|
|
"ask": "20~40", |
|
|
|
|
"rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
"qualified": "合格", |
|
|
|
|
"paramName": "开始", |
|
|
|
|
"paramValue": "2" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"rfpsId": "1", |
|
|
|
|
"detailName": "时间(min)", |
|
|
|
|
"detailIndex": "1", |
|
|
|
|
"ask": "20~40", |
|
|
|
|
"rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
"qualified": "合格", |
|
|
|
|
"paramName": "开始", |
|
|
|
|
"paramValue": "2" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"rfpsId": "2", |
|
|
|
|
"rfpsId": "1", |
|
|
|
|
"detailName": "时间(min)", |
|
|
|
|
"detailIndex": "1", |
|
|
|
|
"ask": "20~40", |
|
|
|
|
"rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
"qualified": "合格", |
|
|
|
|
"paramName": "结束", |
|
|
|
|
"paramValue": "2025/06/28 09:30:49" |
|
|
|
|
"paramName": "开始", |
|
|
|
|
"paramValue": "2" |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"rfpsId": "2", |
|
|
|
|
"detailName": "温度(℃)", |
|
|
|
|
"rfpsId": "1", |
|
|
|
|
"detailName": "时间(min)", |
|
|
|
|
"detailIndex": "1", |
|
|
|
|
"ask": "40~60", |
|
|
|
|
"ask": "20~40", |
|
|
|
|
"rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
"qualified": "合格", |
|
|
|
|
"paramName": "参数名称1", |
|
|
|
|
"paramValue": "55" |
|
|
|
|
"paramName": "开始", |
|
|
|
|
"paramValue": "2" |
|
|
|
|
}, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
|
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
// { |
|
|
|
|
// insertIndex: "1", |
|
|
|
|
// rfpsType: 7, |
|
|
|
|
// // slotIndex: "1", |
|
|
|
|
// slotName: "自来水洗", |
|
|
|
|
// childrenList:[ |
|
|
|
|
// { |
|
|
|
|
// "rfpsId": "1", |
|
|
|
|
// "detailName": "时间(min)", |
|
|
|
|
// "detailIndex": "1", |
|
|
|
|
// "ask": "20~40", |
|
|
|
|
// "rfpdTime": "2026-3-6 18:36:44", |
|
|
|
|
// "qualified": "合格", |
|
|
|
|
// "paramName": "开始", |
|
|
|
|
// "paramValue": "2" |
|
|
|
|
// }, |
|
|
|
|
// ] |
|
|
|
|
// }, |
|
|
|
|
// { |
|
|
|
|
// insertIndex: "1", |
|
|
|
|
// rfpsType: 1, |
|
|
|
|
// // slotIndex: "1", |
|
|
|
|
// slotName: "超声波除油", |
|
|
|
|
@ -393,7 +515,7 @@ export default { |
|
|
|
|
deviceCode:"9652249", |
|
|
|
|
tankInfo:{ |
|
|
|
|
cdjArea:0, |
|
|
|
|
tankData:[ |
|
|
|
|
slotList:[ |
|
|
|
|
{ |
|
|
|
|
slotNo:"B- BD2025062814474772", |
|
|
|
|
partCode:'21E8-570-1122-L36', |
|
|
|
|
@ -420,16 +542,13 @@ export default { |
|
|
|
|
created(){ |
|
|
|
|
console.log('check---------',this.checkedList) |
|
|
|
|
console.log('printType---------',this.printType) |
|
|
|
|
// if(this.printType == '热表'){ |
|
|
|
|
// console.log('checkList--------',this.checkedList) |
|
|
|
|
// getWordDetail({ |
|
|
|
|
// woId:this.woId, |
|
|
|
|
// moduleList:this.rbChecked, |
|
|
|
|
// planList:this.checkedList |
|
|
|
|
// }).then(res =>{ |
|
|
|
|
// console.log('res----------',res) |
|
|
|
|
// }) |
|
|
|
|
// } |
|
|
|
|
const { modelOne, modelTwo, modelThree, modelFour, modelFive } = |
|
|
|
|
printOrderJson.data; |
|
|
|
|
this.modelOne = modelOne |
|
|
|
|
this.modelTwo = modelTwo |
|
|
|
|
console.log('modelOne----------',this.modelOne) |
|
|
|
|
console.log('modelTwo----------',this.modelTwo) |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
methods:{ |
|
|
|
|
getTemplateComponent(type) { |
|
|
|
|
@ -438,11 +557,96 @@ export default { |
|
|
|
|
}, |
|
|
|
|
printData(){ |
|
|
|
|
// exportEchartsToPdf('printMe','热表分厂质量记录卡') |
|
|
|
|
window.print() |
|
|
|
|
// window.print() |
|
|
|
|
|
|
|
|
|
const overflowInfo = this.checkPrintOverflow(); |
|
|
|
|
console.log('打印页数:', overflowInfo.pageCount); |
|
|
|
|
|
|
|
|
|
if (overflowInfo.isOverflow) { |
|
|
|
|
this.addPageBreaks(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
window.print(); |
|
|
|
|
|
|
|
|
|
// 打印后清理分页提示(可选) |
|
|
|
|
setTimeout(() => { |
|
|
|
|
this.removePageBreaks(); |
|
|
|
|
}, 1000); |
|
|
|
|
}, |
|
|
|
|
closeDialog(){ |
|
|
|
|
this.$emit('closeDialog'); |
|
|
|
|
}, |
|
|
|
|
// 判断内容是否超出 A4 纸高度 |
|
|
|
|
checkPrintOverflow() { |
|
|
|
|
const A4_HEIGHT = 297; // A4 纸高度 (mm) |
|
|
|
|
const PRINT_MARGIN = 20; // 上下边距 (mm) |
|
|
|
|
// const AVAILABLE_HEIGHT = (A4_HEIGHT - PRINT_MARGIN) * 3.78; // 转换为像素 (1mm ≈ 3.78px) |
|
|
|
|
const AVAILABLE_HEIGHT = 880 |
|
|
|
|
console.log('AVA============',AVAILABLE_HEIGHT) |
|
|
|
|
|
|
|
|
|
const printContent = this.$refs.printContent; |
|
|
|
|
console.log('dom-----------',document.getElementById('printMe')) |
|
|
|
|
console.log('hei-------',document.getElementById('printMe').offsetHeight) |
|
|
|
|
console.log('prine---------',printContent) |
|
|
|
|
if (!printContent) return false; |
|
|
|
|
|
|
|
|
|
const contentHeight = printContent.scrollHeight; |
|
|
|
|
const pageCount = Math.ceil(contentHeight / AVAILABLE_HEIGHT); |
|
|
|
|
console.log('cont-------------',contentHeight) |
|
|
|
|
console.log('pageCount-------------',pageCount) |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
isOverflow: contentHeight > AVAILABLE_HEIGHT, |
|
|
|
|
pageCount, |
|
|
|
|
contentHeight, |
|
|
|
|
availableHeight: AVAILABLE_HEIGHT |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
// 为表格添加分页符 |
|
|
|
|
addPageBreaks() { |
|
|
|
|
const A4_HEIGHT_PX = 1123; // A4 纸可打印高度像素 (约 297mm - 20mm 边距) |
|
|
|
|
const table = document.getElementById('cus-table'); |
|
|
|
|
if (!table) return; |
|
|
|
|
|
|
|
|
|
const rows = table.querySelectorAll('tr'); |
|
|
|
|
let currentHeight = 0; |
|
|
|
|
let page = 1; |
|
|
|
|
|
|
|
|
|
rows.forEach((row, index) => { |
|
|
|
|
const rowHeight = row.offsetHeight; |
|
|
|
|
currentHeight += rowHeight; |
|
|
|
|
|
|
|
|
|
// 接近页面底部时添加分页符 |
|
|
|
|
if (currentHeight > A4_HEIGHT_PX * page && index > 0) { |
|
|
|
|
row.style.pageBreakBefore = 'always'; |
|
|
|
|
page++; |
|
|
|
|
|
|
|
|
|
// 可选:添加分页提示行 |
|
|
|
|
this.insertPageBreakRow(table, row, page); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
// 插入分页提示行 |
|
|
|
|
insertPageBreakRow(table, referenceRow, pageNum) { |
|
|
|
|
const pageBreakRow = document.createElement('tr'); |
|
|
|
|
pageBreakRow.className = 'page-break-tip'; |
|
|
|
|
pageBreakRow.innerHTML = ` |
|
|
|
|
<td colspan="12" style="text-align:right;font-size:12px;color:#666;"> |
|
|
|
|
--- 第 ${pageNum} 页 --- |
|
|
|
|
</td> |
|
|
|
|
`; |
|
|
|
|
referenceRow.parentNode.insertBefore(pageBreakRow, referenceRow); |
|
|
|
|
}, |
|
|
|
|
// 清理分页提示 |
|
|
|
|
removePageBreaks() { |
|
|
|
|
const pageBreakTips = document.querySelectorAll('.page-break-tip'); |
|
|
|
|
pageBreakTips.forEach(tip => tip.remove()); |
|
|
|
|
|
|
|
|
|
const rows = document.querySelectorAll('#cus-table tr'); |
|
|
|
|
rows.forEach(row => { |
|
|
|
|
row.style.pageBreakBefore = ''; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
@ -472,23 +676,31 @@ export default { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
table { |
|
|
|
|
tr { |
|
|
|
|
width: 100%; |
|
|
|
|
page-break-inside: avoid; |
|
|
|
|
} |
|
|
|
|
td { |
|
|
|
|
width: 8.3%; |
|
|
|
|
height: 30px; |
|
|
|
|
border: 1px solid #000; |
|
|
|
|
background: transparent; |
|
|
|
|
color: #000; |
|
|
|
|
font-size: 14px; |
|
|
|
|
text-align: center; |
|
|
|
|
padding: 0; |
|
|
|
|
margin: 0; |
|
|
|
|
tr { |
|
|
|
|
width: 100%; |
|
|
|
|
page-break-inside: avoid; |
|
|
|
|
break-inside: avoid; |
|
|
|
|
} |
|
|
|
|
td { |
|
|
|
|
width: 11.1%; |
|
|
|
|
height: 30px; |
|
|
|
|
border: 1px solid #000; |
|
|
|
|
background: transparent; |
|
|
|
|
color: #000; |
|
|
|
|
font-size: 14px; |
|
|
|
|
text-align: center; |
|
|
|
|
padding: 0; |
|
|
|
|
margin: 0; |
|
|
|
|
} |
|
|
|
|
// 分页提示行样式 |
|
|
|
|
.page-break-tip { |
|
|
|
|
page-break-before: always; |
|
|
|
|
break-before: always; |
|
|
|
|
height: 20px; |
|
|
|
|
border: none !important; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.fixTopLeft{ |
|
|
|
|
// position: fixed; |
|
|
|
|
float: left; |
|
|
|
|
@ -512,28 +724,41 @@ export default { |
|
|
|
|
} |
|
|
|
|
// @media print { @page { size:21cm 29.7cm } } |
|
|
|
|
</style> |
|
|
|
|
<style> |
|
|
|
|
<style lang="scss"> |
|
|
|
|
@media print { |
|
|
|
|
.no-print { |
|
|
|
|
display: none !important; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.print-btn { |
|
|
|
|
display: none !important; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 确保表格行不被截断 |
|
|
|
|
/* tr.avoid-break { |
|
|
|
|
page-break-inside: avoid; |
|
|
|
|
break-inside: avoid; |
|
|
|
|
} */ |
|
|
|
|
body { |
|
|
|
|
margin: 0; |
|
|
|
|
// padding: 20px; |
|
|
|
|
// font-size: 12pt; |
|
|
|
|
background: white !important; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@page { |
|
|
|
|
size: auto; |
|
|
|
|
margin: 6mm; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* 修复 Vue 3 中常见的打印问题:如果使用了 fixed 布局,打印时会消失或错位 */ |
|
|
|
|
/* .print-content { |
|
|
|
|
position: static !important; |
|
|
|
|
.printBox { |
|
|
|
|
width: 100% !important; |
|
|
|
|
} */ |
|
|
|
|
|
|
|
|
|
/* body, #app, .your-container { |
|
|
|
|
height: auto !important; |
|
|
|
|
overflow: visible !important; |
|
|
|
|
position: static !important; |
|
|
|
|
} */ |
|
|
|
|
|
|
|
|
|
table { |
|
|
|
|
width: 98% !important; |
|
|
|
|
border-collapse: collapse; |
|
|
|
|
|
|
|
|
|
tr { |
|
|
|
|
page-break-inside: avoid; |
|
|
|
|
break-inside: avoid; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</style> |
|
|
|
|
|