Merge remote-tracking branch 'origin/0.8.X' into 0.8.X
This commit is contained in:
@@ -194,7 +194,7 @@
|
|||||||
<el-button size="mini" type="text" icon="el-icon-view" @click="handlePreviewLabel(scope.row)">
|
<el-button size="mini" type="text" icon="el-icon-view" @click="handlePreviewLabel(scope.row)">
|
||||||
打印
|
打印
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleEdit(scope.row)">
|
<el-button v-if="scope.row.actionStatus == 0 || scope.row.actionStatus == 1" size="mini" type="text" icon="el-icon-edit" @click="handleEdit(scope.row)">
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="scope.row.actionStatus == 0 || scope.row.actionStatus == 1" type="primary"
|
<el-button v-if="scope.row.actionStatus == 0 || scope.row.actionStatus == 1" type="primary"
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ export default {
|
|||||||
},
|
},
|
||||||
paperWidthMm: {
|
paperWidthMm: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 100 // 原料码:100mm x 80mm
|
default: 100 // 原料码:100mm x 80mm(宽100,高80)
|
||||||
},
|
},
|
||||||
paperHeightMm: {
|
paperHeightMm: {
|
||||||
type: Number,
|
type: Number,
|
||||||
@@ -233,7 +233,7 @@ export default {
|
|||||||
<style scoped>
|
<style scoped>
|
||||||
.label-container {
|
.label-container {
|
||||||
width: 25em;
|
width: 25em;
|
||||||
height: 15em;
|
height: 20em;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
display: flex; /* 启用Flex布局 */
|
display: flex; /* 启用Flex布局 */
|
||||||
flex-direction: column; /* 子元素垂直排列 */
|
flex-direction: column; /* 子元素垂直排列 */
|
||||||
@@ -286,10 +286,10 @@ export default {
|
|||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 打印样式 - 强制单页,适配180mm x 100mm纸张,保持原有样式不变 */
|
/* 打印样式 - 强制单页,适配100mm x 80mm纸张,保持原有样式不变 */
|
||||||
@media print {
|
@media print {
|
||||||
@page {
|
@page {
|
||||||
size: 180mm 100mm;
|
size: 100mm 80mm;
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ export default {
|
|||||||
Message.info('正在准备打印内容,请稍等...');
|
Message.info('正在准备打印内容,请稍等...');
|
||||||
|
|
||||||
// 2. 计算纸张尺寸(与批量导出保持一致)
|
// 2. 计算纸张尺寸(与批量导出保持一致)
|
||||||
// 根据 labelType 判断:'2' 是材料标签(100x80),'3' 是外标(180x100)
|
// 根据 labelType 判断:'2' 是材料标签(100x80,宽100高80),'3' 是外标(180x100)
|
||||||
const isMaterial = this.labelType === '2';
|
const isMaterial = this.labelType === '2';
|
||||||
const paperWidthMm = isMaterial ? 100 : 180;
|
const paperWidthMm = isMaterial ? 100 : 180;
|
||||||
const paperHeightMm = isMaterial ? 80 : 100;
|
const paperHeightMm = isMaterial ? 80 : 100;
|
||||||
@@ -126,12 +126,13 @@ export default {
|
|||||||
|
|
||||||
// 根据标签类型设置不同的布局方式
|
// 根据标签类型设置不同的布局方式
|
||||||
if (isMaterial) {
|
if (isMaterial) {
|
||||||
// 材料标签:填充 wrapper
|
// 材料标签:设置固定尺寸,确保100mm x 80mm的比例
|
||||||
wrapper.style.display = 'flex';
|
wrapper.style.display = 'flex';
|
||||||
wrapper.style.alignItems = 'center';
|
wrapper.style.alignItems = 'center';
|
||||||
wrapper.style.justifyContent = 'center';
|
wrapper.style.justifyContent = 'center';
|
||||||
labelContainer.style.width = '100%';
|
// 直接设置labelContainer的尺寸为mm单位,确保正确的物理尺寸比例
|
||||||
labelContainer.style.height = '100%';
|
labelContainer.style.width = `${paperWidthMm}mm`;
|
||||||
|
labelContainer.style.height = `${paperHeightMm}mm`;
|
||||||
} else {
|
} else {
|
||||||
// 成品标签:直接放在 wrapper 中,保持原始布局(与批量打印一致)
|
// 成品标签:直接放在 wrapper 中,保持原始布局(与批量打印一致)
|
||||||
wrapper.style.display = 'block';
|
wrapper.style.display = 'block';
|
||||||
@@ -162,35 +163,26 @@ export default {
|
|||||||
windowHeight: labelContainer.scrollHeight,
|
windowHeight: labelContainer.scrollHeight,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 5. 使用 pdf-lib 生成单页 PDF(与批量导出完全一致)
|
// 5. 使用 pdf-lib 生成单页 PDF(占满整张纸,无边距)
|
||||||
const mmToPt = 72 / 25.4;
|
const mmToPt = 72 / 25.4;
|
||||||
const pageWidthPt = paperWidthMm * mmToPt;
|
const pageWidthPt = paperWidthMm * mmToPt;
|
||||||
const pageHeightPt = paperHeightMm * mmToPt;
|
const pageHeightPt = paperHeightMm * mmToPt;
|
||||||
|
|
||||||
// 边距:与批量导出保持一致
|
|
||||||
// 材料标签(100x80):左右2mm,上下0.5mm
|
|
||||||
// 成品标签(180x100):左右4mm,上下0.5mm
|
|
||||||
const marginXmm = isMaterial ? 2 : 4;
|
|
||||||
const marginYmm = 0.5; // 上下对称边距(不裁切前提下尽量贴边)
|
|
||||||
const marginXPt = marginXmm * mmToPt;
|
|
||||||
const marginYPt = marginYmm * mmToPt;
|
|
||||||
const contentWidthPt = pageWidthPt - marginXPt * 2;
|
|
||||||
const contentHeightPt = pageHeightPt - marginYPt * 2;
|
|
||||||
|
|
||||||
const pdfDoc = await PDFDocument.create();
|
const pdfDoc = await PDFDocument.create();
|
||||||
const imgPng = await pdfDoc.embedPng(canvas.toDataURL('image/png'));
|
const imgPng = await pdfDoc.embedPng(canvas.toDataURL('image/png'));
|
||||||
const page = pdfDoc.addPage([pageWidthPt, pageHeightPt]);
|
const page = pdfDoc.addPage([pageWidthPt, pageHeightPt]);
|
||||||
|
|
||||||
const imgW = imgPng.width;
|
const imgW = imgPng.width;
|
||||||
const imgH = imgPng.height;
|
const imgH = imgPng.height;
|
||||||
// 标准适配:确保完整显示且不变形(在内容区域内等比缩放,与批量导出完全一致)
|
// 直接占满整个PDF页面,不留边距
|
||||||
const scale = Math.min(contentWidthPt / imgW, contentHeightPt / imgH);
|
// 确保图片按页面尺寸等比缩放,占满整张纸
|
||||||
|
const scale = Math.min(pageWidthPt / imgW, pageHeightPt / imgH);
|
||||||
const drawW = imgW * scale;
|
const drawW = imgW * scale;
|
||||||
const drawH = imgH * scale;
|
const drawH = imgH * scale;
|
||||||
|
|
||||||
// 内容区域内居中 + 外层边距(上下对称,与批量导出完全一致)
|
// 居中放置(如果图片比例与页面不完全一致)
|
||||||
const x = marginXPt + (contentWidthPt - drawW) / 2;
|
const x = (pageWidthPt - drawW) / 2;
|
||||||
const y = marginYPt + (contentHeightPt - drawH) / 2;
|
const y = (pageHeightPt - drawH) / 2;
|
||||||
|
|
||||||
page.drawImage(imgPng, { x, y, width: drawW, height: drawH });
|
page.drawImage(imgPng, { x, y, width: drawW, height: drawH });
|
||||||
|
|
||||||
|
|||||||
@@ -84,6 +84,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="更新人" align="center" prop="updateByName" />
|
<el-table-column label="更新人" align="center" prop="updateByName" />
|
||||||
|
<el-table-column label="更新时间" align="center" prop="updateTime" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -82,6 +82,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="更新人" align="center" prop="updateByName" />
|
<el-table-column label="更新人" align="center" prop="updateByName" />
|
||||||
|
<el-table-column label="更新时间" align="center" prop="updateTime" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -72,9 +72,9 @@
|
|||||||
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial" />
|
<RawMaterialInfo v-else-if="scope.row.itemType === 'raw_material'" :material="scope.row.rawMaterial" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="重量 (吨)" align="center" prop="netWeight" />
|
||||||
<el-table-column label="长度 (米)" align="center" prop="length" />
|
<el-table-column label="长度 (米)" align="center" prop="length" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
||||||
|
|
||||||
<el-table-column label="出库状态" align="center" prop="status">
|
<el-table-column label="出库状态" align="center" prop="status">
|
||||||
<!-- 0在库,1已出库 -->
|
<!-- 0在库,1已出库 -->
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@@ -82,6 +82,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="更新人" align="center" prop="updateByName" />
|
<el-table-column label="更新人" align="center" prop="updateByName" />
|
||||||
|
<el-table-column label="更新时间" align="center" prop="updateTime" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user