|
|
@@ -0,0 +1,247 @@
|
|
|
+<template>
|
|
|
+ <ele-modal
|
|
|
+ title="出库单"
|
|
|
+ :visible.sync="QRvisible"
|
|
|
+ v-if="QRvisible"
|
|
|
+ width="80%"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ id="printSection"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: 800;
|
|
|
+ padding-right: 20px;
|
|
|
+ width: 400px;
|
|
|
+ margin: 0 auto;
|
|
|
+ "
|
|
|
+ >{{ groupName }}出库单</div
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ margin-top: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <span style="width: 30%">客户:{{ formData.contactName }}</span>
|
|
|
+ <span style="width: 30%">单据编码:{{ formData.docNo }}</span>
|
|
|
+ <span style="width: 30%">单据日期:{{ formData.createTime }}</span>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <span style="width: 80%">送货地址:{{ formData.receiveAddress }}</span>
|
|
|
+ </div>
|
|
|
+ <table
|
|
|
+ cellspacing="0"
|
|
|
+ border
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ table-layout: fixed;
|
|
|
+ word-break: break-all;
|
|
|
+ word-wrap: break-word;
|
|
|
+ font-size: 12px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <tbody>
|
|
|
+ <tr align="center">
|
|
|
+ <td style="padding: 5px"> 序号 </td>
|
|
|
+ <td style="padding: 5px"> 名称 </td>
|
|
|
+ <td style="padding: 5px"> 规格型号 </td>
|
|
|
+ <td style="padding: 5px; width: 60px"> 单位 </td>
|
|
|
+ <td style="padding: 5px; width: 110px"> 数量 </td>
|
|
|
+ <td style="padding: 5px"> 颜色 </td>
|
|
|
+ <td style="padding: 5px"> 生产批号 </td>
|
|
|
+ <td style="padding: 5px"> 裁线米段 </td>
|
|
|
+ <td style="padding: 5px"> 仓库 </td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <tr align="center" v-for="(item, index) in formData.productList">
|
|
|
+ <td style="padding: 5px"> {{ index + 1 }} </td>
|
|
|
+ <td style="padding: 5px"> {{ item.productName }} </td>
|
|
|
+ <td style="padding: 5px">
|
|
|
+ {{ item.specification }}/{{ item.modelType }}
|
|
|
+ </td>
|
|
|
+ <td style="padding: 5px"> {{ item.measuringUnit }}</td>
|
|
|
+ <td style="padding: 5px"> {{ item.totalCount }}</td>
|
|
|
+ <td style="padding: 5px"> {{ item.colorKey }}</td>
|
|
|
+ <td style="padding: 5px"> {{ item.batchNo }}</td>
|
|
|
+ <td style="padding: 5px"> {{ item.remark }}</td>
|
|
|
+ <td style="padding: 5px"> {{ item.warehouseName }}</td>
|
|
|
+ </tr>
|
|
|
+ <tr align="center">
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
+ <td style="padding: 5px"> 合计 </td>
|
|
|
+ <td style="padding: 5px" colspan="2"> </td>
|
|
|
+ <td style="padding: 5px">{{ getTotalValue('totalCount', 2) }} </td>
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div style="flex: 1">
|
|
|
+ <div>制单人:{{ formData.makerName }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="flex: 1"> 核对人: </div>
|
|
|
+ <div style="flex: 1">
|
|
|
+ <div>仓库:</div>
|
|
|
+ </div>
|
|
|
+ <div style="flex: 1"> 审核: {{ formData.reviewerName || '' }}</div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div style="flex: 1">
|
|
|
+ <div>司机:</div>
|
|
|
+ </div>
|
|
|
+ <div style="flex: 1"> 是否回单: {{ receiptRequirementTypeOption.find(item => item.value === formData.receiptRequirementTypeId)?.label || '' }}</div>
|
|
|
+ <div style="flex: 1">
|
|
|
+ <div>运费:{{ formData.deliveryTypeName || '' }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="flex: 1"> </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div style="flex: 1">
|
|
|
+ <div>备注:</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button @click="print">打印预览</el-button>
|
|
|
+ <el-button @click="close">关闭</el-button>
|
|
|
+ </div>
|
|
|
+ </ele-modal>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import { getSendSaleOrderrecordDetailSplit } from '@/api/saleManage/saleordersendrecord';
|
|
|
+ import { mapGetters } from 'vuex';
|
|
|
+ import dictMixins from '@/mixins/dictMixins';
|
|
|
+ export default {
|
|
|
+ mixins: [dictMixins],
|
|
|
+ name: 'print',
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(['user'])
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ groupName: ''
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ checked: '',
|
|
|
+ QRvisible: false,
|
|
|
+ isPrintPrice: false,
|
|
|
+ formData: {},
|
|
|
+ receiptRequirementTypeOption: [
|
|
|
+ {
|
|
|
+ label: '签回单',
|
|
|
+ value: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '不签回单',
|
|
|
+ value: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '带签收单',
|
|
|
+ value: 3
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.requestDict('送货方式');
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async open(id, isPrintPrice) {
|
|
|
+ this.formData = await getSendSaleOrderrecordDetailSplit(id);
|
|
|
+ this.formData.deliveryTypeName = this.getDictValue(
|
|
|
+ '送货方式',
|
|
|
+ this.formData.deliveryTypeId
|
|
|
+ );
|
|
|
+ this.QRvisible = true;
|
|
|
+ this.isPrintPrice = isPrintPrice;
|
|
|
+ //包装维度
|
|
|
+ },
|
|
|
+ close() {
|
|
|
+ this.QRvisible = false;
|
|
|
+ },
|
|
|
+ getTotalValue(key, num) {
|
|
|
+ let val = this.formData?.productList?.reduce((total, item) => {
|
|
|
+ return (total += Number(item[key]));
|
|
|
+ }, 0);
|
|
|
+
|
|
|
+ return (
|
|
|
+ (val &&
|
|
|
+ parseFloat(val)
|
|
|
+ .toFixed(num)
|
|
|
+ .replace(/\.?0+$/, '')) ||
|
|
|
+ 0
|
|
|
+ );
|
|
|
+ },
|
|
|
+ print() {
|
|
|
+ const printSection = document.getElementById('printSection');
|
|
|
+ // 创建打印任务
|
|
|
+ const printWindow = window.open('', '_blank');
|
|
|
+ printWindow.document.open();
|
|
|
+ printWindow.document.write('<html><head><title>打印预览</title>');
|
|
|
+ printWindow.document.write(
|
|
|
+ '<link rel="stylesheet" href="your-stylesheet-url.css" type="text/css" />'
|
|
|
+ );
|
|
|
+ printWindow.document.write('</head><body>');
|
|
|
+ printWindow.document.write(printSection.innerHTML);
|
|
|
+ printWindow.document.write('</body></html>');
|
|
|
+ printWindow.document.close();
|
|
|
+ printWindow.onload = function () {
|
|
|
+ printWindow.print();
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss"></style>
|