north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -30,6 +30,7 @@ request.post(`/Delivery/getSelectDeliveryPrinting`,form.value).then((res) => { if(res.code==200){ console.log(res.data.data) produceList.value = deepClone(res.data.data) delivery.value=deepClone(res.data.delivery) money.value=deepClone(res.data.money) @@ -93,7 +94,164 @@ <template> <div id="sheet"> <table border="1" > <table > <thead> <tr class="title-s"> <th colspan="13"> <h1> {{company.companyName}} </h1> </th> </tr> <tr class="title-s"> <th colspan="2"></th> <th colspan="5"> <h3>销售发货单</h3> </th> <th colspan="2" style="text-align: left;">发货单号:<span>{{delivery.deliveryId}}</span></th> </tr> <tr> <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{delivery.customerName}}</span></th> <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th> <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th> </tr> <tr> <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{delivery.deliveryAddress}}</span></th> <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th> </tr> </thead> <tr style="border-style: none"> <td colspan="9" style="border-style: none"> <table style="border-style: none;width: 100%;height: 100%"> <template v-for="(item, index) in produceList" :key="index" > <thead> <tr v-if="index===0"> <th style="width: 6%;">序号</th> <th style="width: 20%;">楼层编号</th> <th style="width: 20%;" colspan="2">宽X高</th> <th style="width: 10%;">数量</th> <th style="width: 10%;">面积</th> <th style="width: 10%;">单价</th> <th style="width: 12%;">金额</th> <th style="width: 12%;" colspan="2">加工要求</th> </tr> <tr> <td style="font-size: 15px;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td> <td style="font-size: 15px;text-align: left" colspan="3">对方单号:</td> <td style="font-size: 15px;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.orderDetail.orderId}}</span></td> </tr> </thead> <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1"> <td>{{items.order_number}}</td> <td>{{items.buildingNumber}}</td> <td colspan="2" style="font-size: 15px;font-weight: bold;">{{items.width}}x{{items.height}}</td> <td>{{items.quantity}}</td> <td>{{items.area}}</td> <td>{{items.price}}</td> <td>{{items.money}}</td> <td colspan="2">{{items.processingNote}}</td> </tr> <tr class="day-in" > <td style="font-size: 15px;" colspan="4">小计:</td> <td>{{item.DeliveryDetail.quantity}}</td> <td>{{item.DeliveryDetail.area}}</td> <td></td> <td>{{item.DeliveryDetail.money}}</td> <td></td> </tr> </template> <tr class="day-in"> <td style="font-size: 15px;" colspan="4">合计:</td> <td>{{delivery.quantity}}</td> <td>{{delivery.area}}</td> <td></td> <td>{{delivery.money-otherMoneys-delivery.freight}}</td> <td></td> </tr> <tr class="day-in"> <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6" colspan="4"> <div style="display: flex;font-size: 10px;text-align: center;"> <div style="width: 25%">加工费用</div> <div style="width: 25%">单价</div> <div style="width: 25%">数量</div> <div style="width: 25%">金额</div> </div> </td> <td style="text-align: left;border:none;font-size: 15px;" colspan="5">总金额: {{delivery.money}}</td> </tr> <tr class="day-in"> <td style="text-align: left;border-width: 0 1px 0 0; border-style: solid; border-color: #d3dce6;" colspan="4" > <div style="display: flex;font-size: 10px;text-align: center" v-for="(item, index2) in otherMoney" :key="index2"> <div style="width: 25%">{{item.DeliveryDetailOtherMoney.alias}}</div> <div style="width: 25%">{{item.DeliveryDetailOtherMoney.price}}</div> <div style="width: 25%">{{item.DeliveryDetailOtherMoney.count}}</div> <div style="width: 25%">{{item.DeliveryDetailOtherMoney.monery}}</div> </div> <div style="display: flex;font-size: 10px;text-align: center" v-if="delivery.freight>0"> <div style="width: 25%">运费</div> <div style="width: 25%">{{delivery.freightPrice}}</div> <div style="width: 25%">{{delivery.freightQuantity}}</div> <div style="width: 25%">{{delivery.freight}}</div> </div> </td> <td style="text-align: left;border:none;font-size: 15px;" colspan="5">大写金额: {{money}}</td> </tr> <!-- <el-row :gutter="24"> <el-col :span="4"><div style="font-size: 12px" class="bottom">制单员:{{data.order.creator}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">制单日期:{{data.order.createTime}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">审核员:{{data.order.verifier}}</div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">审核日期:{{data.order.updateTime}}</div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">打印人:{{username}}</div></el-col> </el-row>--> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;;text-align: left" class="bottom"> <div style="width: 15%">制单员:{{ delivery.creator }}</div> <div style="width: 25%">制单日期:{{ delivery.createTime }}</div> <div style="width: 10%">发货员:</div> <div style="width: 10%">司机:</div> <div style="width: 15%">客户签字:</div> <div style="width: 15%">签收日期:</div> </div> </td> </tr> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;" class="bottom"> 架子 只 {{takeCare}} </div> </td> </tr> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;" class="bottom"> {{remark}} </div> </td> </tr> </table> </td> </tr> </table> <!-- <table border="1" > <thead> <tr class="title-s"> <th colspan="13"> <h1> @@ -128,6 +286,7 @@ <th style="width: 12%;">金额</th> <th style="width: 12%;" colspan="2">加工要求</th> </tr> </thead> <template v-for="(item, index) in produceList" :key="index" > <tr> <td style="font-size: 15px;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td> @@ -192,23 +351,50 @@ <td style="text-align: left;border:none;font-size: 15px;" colspan="5">大写金额: {{money}}</td> </tr> </table> <el-row :gutter="20"> <el-col :span="4"><div class="bottom">制单员:<span style="font-size: 10px">{{delivery.creator}}</span></div></el-col> <el-col :span="4"><div class="bottom">制单日期:<span style="font-size: 10px">{{delivery.createTime}}</span></div></el-col> <el-col :span="4"><div class="bottom">发货员:</div></el-col> <el-col :span="3"><div class="bottom">司机:</div></el-col> <el-col :span="4"><div class="bottom">客户签字:</div></el-col> <el-col :span="4"><div class="bottom">签收日期:</div></el-col> </el-row> <el-row :gutter="20" style="margin-top: 20px;"> <el-col :span="4"><div class="bottom">架子 只</div></el-col> <el-col :span="20"><div class="bottom">{{takeCare}}</div></el-col> </el-row> <el-row :gutter="20" style="margin-top: 20px;"> <el-col :span="24"><div class="bottom">{{remark}}</div></el-col> </el-row> <tfoot style="border: 0"> <!– <el-row :gutter="24"> <el-col :span="4"><div style="font-size: 12px" class="bottom">制单员:{{data.order.creator}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">制单日期:{{data.order.createTime}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">审核员:{{data.order.verifier}}</div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">审核日期:{{data.order.updateTime}}</div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">打印人:{{username}}</div></el-col> </el-row>–> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;"> <div style="width: 15%">制单员:{{ delivery.creator }}</div> <div style="width: 25%">制单日期:{{ delivery.createTime }}</div> <div style="width: 10%">发货员:</div> <div style="width: 10%">司机:</div> <div style="width: 15%">客户签字:</div> <div style="width: 15%">签收日期:</div> </div> </td> </tr> <tr> <td colspan="9" style="border: 0;"> <div style="display:flex;" class="bottom">架子 只</div> <div style="display:flex;" class="bottom"> {{takeCare}} </div> </td> </tr> <tr> <td colspan="9" style="border: 0;"> <div style="display:flex;" class="bottom"> {{remark}} </div> </td> </tr> </tfoot> </table>--> </div> @@ -256,6 +442,15 @@ .title-s,.title-s th{ border:0 } table { border-collapse: collapse; width: 100%; } td > table { margin: 0; padding: 0; } .hr-border{ height: 2px; @@ -263,12 +458,12 @@ background-color: black; color: black; } @page { size: auto; /* auto is the initial value */ margin: 8mm 16mm 16mm 16mm /* this affects the margin in the printer settings */ size: auto; margin: 8mm 16mm 16mm 16mm } </style> north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
New file @@ -0,0 +1,287 @@ <script setup> import request from "@/utils/request" import {computed, onMounted, ref} from "vue" import PrintFoot from "@/components/sd/order/PrintFoot.vue" import companyInfo from "@/stores/sd/companyInfo" import deepClone from "@/utils/deepClone"; import {ElMessage} from "element-plus"; const company = companyInfo() let produceList = ref([]) let otherMoney = ref([]) let delivery = ref([]) let money = ref("") let otherMoneys = 0 let takeCare = "注意:请妥善保管好我司的玻璃架,如有丢失或损坏,按1500元只赔偿。谢谢配合!" let remark = "备注:本批玻璃为优等合格品,请在卸货时,当面消点验收、如有质量问题在一周内与本公司联系,否则概不负责!" let props = defineProps({ deliveryId:null }) const form = ref({ }) const getData = () => { if(props.deliveryId===null || props.deliveryId===undefined || props.deliveryId===''){ return } form.value.deliveryId=props.deliveryId request.post(`/Delivery/getSelectDeliveryPrinting`,form.value).then((res) => { if(res.code==200){ console.log(res.data.data) produceList.value = deepClone(res.data.data) delivery.value=deepClone(res.data.delivery) money.value=deepClone(res.data.money) otherMoney.value=deepClone(res.data.otherMoney) otherMoney.value.forEach(item => { otherMoneys+=item.DeliveryDetailOtherMoney.monery }) }else{ ElMessage.warning(res.msg) router.push("/login") } }) } onMounted(() => { getData() }) const stringToJson = (productList) => { productList.forEach(item => { item.otherColumns = JSON.parse(item.otherColumns) }) } const getQuantity = (productList) => { let quantity = 0 productList.forEach(item => { quantity += item.quantity }) return parseFloat(quantity.toFixed(3)) } const getArea = (productList) => { let area = 0 productList.forEach(item => { area += item.grossArea }) return parseFloat(area.toFixed(3)) } const getPerimeter = (productList) => { let perimeter = 0 productList.forEach(item => { perimeter += item.perimeter }) return parseFloat(perimeter.toFixed(3)) } const printSheet = () => { } defineExpose({ printSheet }); </script> <template> <div id="sheet"> <table > <thead> <tr class="title-s"> <th colspan="13"> <h1> {{company.companyName}} </h1> </th> </tr> <tr class="title-s"> <th colspan="2"></th> <th colspan="5"> <h3>销售发货单</h3> </th> <th colspan="2" style="text-align: left;">发货单号:<span>{{delivery.deliveryId}}</span></th> </tr> <tr> <th style="text-align: left;border:none;" colspan="4">客户名称:<span>{{delivery.customerName}}</span></th> <th style="text-align: left;border:none;" colspan="3">项目名称:<span>{{delivery.project}}</span></th> <th style="text-align: left;border:none;" colspan="2">联系人:<span>{{delivery.contacts}}</span></th> </tr> <tr> <th style="text-align: left;border:none;" colspan="7">送货地址:<span>{{delivery.deliveryAddress}}</span></th> <th style="text-align: left;border:none;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th> </tr> </thead> <tr style="border-style: none"> <td colspan="9" style="border-style: none"> <table style="border-style: none;width: 100%;height: 100%"> <template v-for="(item, index) in produceList" :key="index" > <thead> <tr v-if="index===0"> <th style="width: 6%;">序号</th> <th style="width: 20%;">楼层编号</th> <th style="width: 20%;" colspan="2">宽X高</th> <th style="width: 10%;">数量</th> <th style="width: 10%;">面积</th> <th style="width: 32%;" colspan="3">加工要求</th> </tr> </thead> <tr> <td style="font-size: 15px;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.orderDetail.productName}}</span></td> <td style="font-size: 15px;text-align: left" colspan="2">对方单号:</td> <td style="font-size: 15px;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.orderDetail.orderId}}</span></td> </tr> <tr class="day-in" v-for="(items, index1) in item.DeliveryDetailList" :key="index1"> <td>{{items.order_number}}</td> <td>{{items.buildingNumber}}</td> <td colspan="2" style="font-size: 15px;font-weight: bold;">{{items.width}}x{{items.height}}</td> <td>{{items.quantity}}</td> <td>{{items.area}}</td> <td colspan="3">{{items.processingNote}}</td> </tr> <tr class="day-in" > <td style="font-size: 15px;" colspan="4">小计:</td> <td>{{item.DeliveryDetail.quantity}}</td> <td>{{item.DeliveryDetail.area}}</td> </tr> </template> <tr class="day-in"> <td style="font-size: 15px;" colspan="4">合计:</td> <td>{{delivery.quantity}}</td> <td>{{delivery.area}}</td> </tr> <!-- <el-row :gutter="24"> <el-col :span="4"><div style="font-size: 12px" class="bottom">制单员:{{data.order.creator}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">制单日期:{{data.order.createTime}}<span style="font-size: 10px"></span></div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">审核员:{{data.order.verifier}}</div></el-col> <el-col :span="6"><div style="font-size: 12px" class="bottom">审核日期:{{data.order.updateTime}}</div></el-col> <el-col :span="4"><div style="font-size: 12px" class="bottom">打印人:{{username}}</div></el-col> </el-row>--> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;;text-align: left" class="bottom"> <div style="width: 15%">制单员:{{ delivery.creator }}</div> <div style="width: 25%">制单日期:{{ delivery.createTime }}</div> <div style="width: 10%">发货员:</div> <div style="width: 10%">司机:</div> <div style="width: 15%">客户签字:</div> <div style="width: 15%">签收日期:</div> </div> </td> </tr> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;" class="bottom"> 架子 只 {{takeCare}} </div> </td> </tr> <tr class="day-in" style="border: 0;"> <td colspan="9" style="border: 0;"> <div style="display:flex;" class="bottom"> {{remark}} </div> </td> </tr> </table> </td> </tr> </table> </div> </template> <style scoped> #child{ margin-top: 20px; } h1,h3{ left:0; right:0; top:0; bottom:0; margin:auto; } h1{ font-size: 1.5rem; } h3{ font-size: 1.2rem; } table{ border-collapse: collapse; width: 100%; text-align: center; } tr,td,th{ border: 1px solid black; } th,.no-change-row { white-space: nowrap; } .title-1{ width: 76px; } .title-s,.title-s th{ border:0 } table { border-collapse: collapse; width: 100%; } td > table { margin: 0; padding: 0; } .hr-border{ height: 2px; width: 100%; background-color: black; color: black; } @page { size: auto; margin: 8mm 16mm 16mm 16mm } </style> north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue
@@ -177,13 +177,13 @@ <th style="width: 17%;font-weight: bold;" colspan="3">加工要求</th> </tr> </thead> <tr style="border-style: none"> <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="9"> 产品名称:<span>{{item.productName}}</span> 产品名称:<span>{{data.orderProductDetail[index].productName}}</span> </td> </tr> </thead> <tr class="day-in" v-for="(items, index1) in item.productDetail" :key="index1"> <td>{{items.orderNumber}}</td> <td>{{items.buildingNumber}}</td> north-glass-erp/northglass-erp/src/lang/zh.js
@@ -183,7 +183,7 @@ computeArea:'结算单片面积', computeGrossArea:'结算总面积', shape:'形状', bendRadius:'弯钢弧度', bendRadius:'弯钢半径', edgingType:'磨边类型', import:'导入', template:'模板', north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
@@ -129,9 +129,8 @@ <div class="row1"> <span>{{ item.customer_name }}</span> <span>{{ item.order_id }}</span> <span v-if="item.type_name.includes('中空')">中空</span> <span v-else-if="item.type_name.includes('夹层')">夹层</span> <span v-else-if="item.type_name.includes('夹胶')">夹胶</span> <span v-if="item.process.includes('夹胶')">夹胶</span> <span v-else-if="item.process.includes('中空')">中空</span> <span v-else></span> </div> @@ -166,7 +165,6 @@ justify-content: left; flex-wrap: wrap; margin-left: 5px; margin-top: 15px; } #entirety{ @@ -220,7 +218,7 @@ @page { size: auto; /* auto is the initial value */ margin: 8mm 4mm 0mm 6mm /* this affects the margin in the printer settings */ margin: 13mm 4mm 0mm 6mm /* this affects the margin in the printer settings */ } north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue
@@ -137,7 +137,6 @@ justify-content: left; flex-wrap: wrap; margin-left: 5px; margin-top: 15px; } #entirety{ @@ -185,7 +184,7 @@ @page { size: auto; /* auto is the initial value */ margin: 8mm 4mm 0mm 6mm /* this affects the margin in the printer settings */ margin: 13mm 4mm 0mm 6mm /* this affects the margin in the printer settings */ } north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -309,7 +309,7 @@ //{field: 'buildingNumber',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'price',width:120, title: t('order.price'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'finishedGoodsInventory.storageRegion',width:120, title: t('productStock.inventoryArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'deliveryDetail.money',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -12,6 +12,7 @@ import footSum from "@/hook/footSum" import {CircleCheck, Download, Printer} from "@element-plus/icons-vue/global"; import PrintSheet1 from "@/components/sd/delivery/PrintSheet1.vue"; import PrintSheet2 from "@/components/sd/delivery/PrintSheet2.vue"; //语言获取 const { t } = useI18n() @@ -199,6 +200,15 @@ sheetIndex.value=1 break } case 'sheet2': { if(rowClickIndex.value===null){ ElMessage.warning(t('searchOrder.msgList.checkOrder')) return } dialogTableVisible.value = true sheetIndex.value=2 break } } } }, @@ -240,6 +250,7 @@ options: [ [ { code: 'sheet1', name: t('basicData.print'), prefixIcon: 'vxe-icon-file-txt', visible: true}, { code: 'sheet2', name: t('basicData.print')+'无金额', prefixIcon: 'vxe-icon-file-txt', visible: true}, ] ] } @@ -386,6 +397,7 @@ <el-button v-print="printContent" :icon="Printer" circle /> </template> <print-sheet1 id="child" v-if="sheetIndex===1" :deliveryId="rowClickIndex.deliveryId" /> <print-sheet2 id="child" v-if="sheetIndex===2" :deliveryId="rowClickIndex.deliveryId" /> </el-dialog> </div> north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -429,13 +429,18 @@ } const printingNumber = ()=>{ request.post(`/order/updateOrderPrintNumber/${rowClickIndex.value.orderId}`).then(res =>{ if(sheetIndex.value===4){ request.post(`/order/updateOrderPrintNumber/${rowClickIndex.value.orderId}`).then(res =>{ }) }) } } const closeDialog = ()=>{ selectOrderList() console.log(xGrid.value.getTableData()) } </script> north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -555,6 +555,7 @@ od.width, od.height, ogd.glass_child, ogd.process, e.type_name, opd.stock_id, od.quantity, @@ -581,6 +582,7 @@ od.order_number as orderNumber, fc.technology_number as technologyNumber, ogd.glass_child, ogd.process, c.customer_abbreviation as customer_name, ifnull(od.processing_note,'') as processing_note, bgt.type_name,