|
@@ -0,0 +1,214 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <ele-modal
|
|
|
|
|
+ title="送货单"
|
|
|
|
|
+ :visible.sync="QRvisible"
|
|
|
|
|
+ v-if="QRvisible"
|
|
|
|
|
+ width="90%"
|
|
|
|
|
+ >
|
|
|
|
|
+ <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%; margin-bottom: 10px; margin-top: 20px;">
|
|
|
|
|
+ <table cellspacing="0" style="width: 100%; font-size: 12px;">
|
|
|
|
|
+ <tbody>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td style="text-align: right; width: 80px; padding: 3px;">购货单位:</td>
|
|
|
|
|
+ <td style="padding: 3px; width: 30%;">{{ formData.contactName }}</td>
|
|
|
|
|
+ <td style="text-align: right; width: 80px; padding: 3px;">票据类型:</td>
|
|
|
|
|
+ <td style="padding: 3px;"></td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td style="text-align: right; padding: 3px;">送货地址:</td>
|
|
|
|
|
+ <td style="padding: 3px;" colspan="3">{{ formData.receiveAddress }}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td style="text-align: right; padding: 3px;">联系人:</td>
|
|
|
|
|
+ <td style="padding: 3px; width: 150px;">{{ formData.linkName || '' }}</td>
|
|
|
|
|
+ <td style="text-align: right; padding: 3px;">联系电话:</td>
|
|
|
|
|
+ <td style="padding: 3px; width: 150px;">{{ formData.linkPhone || '' }}</td>
|
|
|
|
|
+ <td style="text-align: right; padding: 3px;">发货日期:</td>
|
|
|
|
|
+ <td style="padding: 3px;">{{ formData.createTime }}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </tbody>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ </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; width: 100px"> 商品条码 </td>
|
|
|
|
|
+ <td style="padding: 5px"> 产品名称 </td>
|
|
|
|
|
+ <td style="padding: 5px"> 规格型号 </td>
|
|
|
|
|
+ <td style="padding: 5px; width: 60px"> 单位 </td>
|
|
|
|
|
+ <td style="padding: 5px; width: 80px"> 数量 </td>
|
|
|
|
|
+ <td style="padding: 5px; width: 80px"> 单价 </td>
|
|
|
|
|
+ <td style="padding: 5px; width: 90px"> 金额 </td>
|
|
|
|
|
+ <td style="padding: 5px"> 注册证号 </td>
|
|
|
|
|
+ <td style="padding: 5px"> 注册人 </td>
|
|
|
|
|
+ <td style="padding: 5px"> 生产批号 </td>
|
|
|
|
|
+ <td style="padding: 5px; width: 120px"> 生产/失效日期 </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"> {{ item.productCode || '' }} </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.singlePrice }} </td>
|
|
|
|
|
+ <td style="padding: 5px"> {{ item.totalPrice }} </td>
|
|
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
|
|
+ <td style="padding: 5px"> {{ item.batchNo }} </td>
|
|
|
|
|
+ <td style="padding: 5px"> {{ item.produceDeliveryDeadline }} / {{ item.guaranteePeriodDeadline }} </td>
|
|
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
|
|
+ <td style="padding: 5px"> {{ item.remark }} </td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr align="center">
|
|
|
|
|
+ <td style="padding: 5px" colspan="4"> 合计 </td>
|
|
|
|
|
+ <!-- <td style="padding: 5px" colspan="4"> </td> -->
|
|
|
|
|
+ <td style="padding: 5px">{{ getTotalValue('totalCount', 2) }} </td>
|
|
|
|
|
+ <td style="padding: 5px"> </td>
|
|
|
|
|
+ <td style="padding: 5px"> {{ getTotalValue('totalPrice', 2) }} </td>
|
|
|
|
|
+ <td style="padding: 5px" colspan="6"> </td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr align="center">
|
|
|
|
|
+ <td style="padding: 5px;" colspan="4">合计金额大写</td>
|
|
|
|
|
+ <td style="padding: 5px;" colspan="9">{{ convertToChinese(getTotalValue('totalPrice', 2)) }}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </tbody>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ <!-- 联系信息 -->
|
|
|
|
|
+ <div style="width: 100%; margin-top: 10px; font-size: 12px; display: flex; align-items: center;">
|
|
|
|
|
+ <div style="width: 33%;">制单:{{ formData.makerName }}</div>
|
|
|
|
|
+ <div style="width: 33%;">发货人:{{ formData.createUserName }}</div>
|
|
|
|
|
+ <div style="width: 33%;">审核人:{{ formData.reviewerName }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 生产企业信息 -->
|
|
|
|
|
+ <div style="width: 100%; margin-top: 10px; font-size: 12px; display: flex; align-items: center;">
|
|
|
|
|
+ <div style="width: 50%;">生产企业:{{ companyInfo?.name || '' }}</div>
|
|
|
|
|
+ <div style="width: 50%;">生产许可证号:{{ companyInfo?.unifiedSocialCreditCode || '' }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 生产企业信息 -->
|
|
|
|
|
+ <div style="width: 100%; margin-top: 10px; font-size: 12px; display: flex; align-items: center;">
|
|
|
|
|
+ <div style="width: 100%;">公司地址:{{ companyInfo?.address || '' }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 生产企业信息 -->
|
|
|
|
|
+ <div style="width: 100%; margin-top: 10px; font-size: 12px; display: flex; align-items: center;">
|
|
|
|
|
+ <div style="width: 33%;">电话: {{ companyInfo?.tel || '' }}</div>
|
|
|
|
|
+ <div style="width: 33%;">传真:{{ companyInfo?.fax || '' }}</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 { convertToChinese as numToChinese } from '@/utils/util';
|
|
|
|
|
+ export default {
|
|
|
|
|
+ name: 'print',
|
|
|
|
|
+ computed: {
|
|
|
|
|
+ ...mapGetters(['user'])
|
|
|
|
|
+ },
|
|
|
|
|
+ props: {
|
|
|
|
|
+ groupName: '',
|
|
|
|
|
+ companyInfo: {}
|
|
|
|
|
+ },
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ checked: '',
|
|
|
|
|
+ QRvisible: false,
|
|
|
|
|
+ isPrintPrice: false,
|
|
|
|
|
+ formData: {}
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ async open(id, isPrintPrice) {
|
|
|
|
|
+ console.log('this.companyInfo',this.companyInfo)
|
|
|
|
|
+ this.formData = await getSendSaleOrderrecordDetailSplit(id);
|
|
|
|
|
+ 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));
|
|
|
|
|
+ }, 0);
|
|
|
|
|
+
|
|
|
|
|
+ return (
|
|
|
|
|
+ (val &&
|
|
|
|
|
+ parseFloat(val)
|
|
|
|
|
+ .toFixed(num)
|
|
|
|
|
+ .replace(/\.?0+$/, '')) ||
|
|
|
|
|
+ 0
|
|
|
|
|
+ );
|
|
|
|
|
+ },
|
|
|
|
|
+ // 将导入的函数添加到methods中,使其在模板中可用
|
|
|
|
|
+ convertToChinese(num) {
|
|
|
|
|
+ return numToChinese(num);
|
|
|
|
|
+ },
|
|
|
|
|
+ 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>
|