| | |
| | | import QRCode from "qrcode"; |
| | | import companyInfo from "@/stores/sd/companyInfo"; |
| | | import userInfo from "@/stores/userInfo" |
| | | import {add,addAuto} from '@/utils/decimal'; |
| | | //语言获取 |
| | | const company = companyInfo() |
| | | const {t} = useI18n() |
| | |
| | | //console.log(element.style.height) |
| | | } |
| | | }); |
| | | |
| | | const selectPrint = () => { |
| | | const orderDetailList = ref([]) |
| | | const customer = ref({}) |
| | | const selectPrint =async () => { |
| | | request.post(`/finishedGoodsInventory/getSelectPrints`, data.value).then((res) => { |
| | | if (res.code == 200) { |
| | | console.log(res.data.data) |
| | | produceList.value = deepClone(res.data.data) |
| | | console.log(produceList.value) |
| | | customer.value = produceList.value[0].detail[0] |
| | | let height = 0 |
| | | let index = 0 |
| | | |
| | | produceList.value[0].detailList.forEach(order => { |
| | | if(orderDetailList.value[index]===undefined){ |
| | | orderDetailList.value[index]=[] |
| | | } |
| | | height+=50 |
| | | //判断高度是否超过350,则换页 |
| | | if(height>=500){ |
| | | height=0 |
| | | index+=1 |
| | | orderDetailList.value[index]=[] |
| | | } |
| | | orderDetailList.value[index].push({ |
| | | type:'product', |
| | | productName:order.product_name |
| | | }) |
| | | |
| | | |
| | | order.detailList.forEach(item => { |
| | | height+=30 |
| | | if(height>=500){ |
| | | height=0 |
| | | index+=1 |
| | | orderDetailList.value[index]=[] |
| | | } |
| | | orderDetailList.value[index].push({ |
| | | type:'size', |
| | | size:item |
| | | }) |
| | | }) |
| | | }) |
| | | orderDetailList.value.forEach((page,index)=>{ |
| | | let sum = { |
| | | quantity:0, |
| | | area:0, |
| | | weight:0 |
| | | } |
| | | page.forEach((row)=>{ |
| | | if(row.type==='size'){ |
| | | sum.quantity +=row.size.quantity |
| | | sum.area =addAuto(row.size.area,sum.area,2) |
| | | sum.weight =addAuto(row.size.weight,sum.weight,2) |
| | | } |
| | | }) |
| | | page.push({ |
| | | type:'sum', |
| | | sum:sum |
| | | }) |
| | | }) |
| | | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | router.push("/login") |
| | |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | |
| | | <template v-for="(item,id) in produceList" :key="id"> |
| | | <template v-for="(items,id) in count" :key="id"> |
| | | <div style="width: 46%;" > |
| | | <div style="height: 100%;width: 100%;"> |
| | | <table> |
| | | <thead> |
| | | <tr> |
| | | <td colspan="1" style="text-align: center;font-weight: bolder;"> |
| | | <div style="width: 60px;height: 60px"><img id="img-pic" style="width:100%;height: 100%" src="@/assets/northGlass.ico" alt=""></div> |
| | | </td> |
| | | <td colspan="4" style="font-weight: bolder"> |
| | | <div style="font-size: 15px;font-weight: bold;line-height: 15px;"> |
| | | <p |
| | | style="font-size: 15px; |
| | | font-weight: bold; |
| | | line-height: 15px;" |
| | | >{{companyAddress.company}}</p> |
| | | <span style="font-size: 8px;"> {{companyAddress.companyInfo}}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="5" style="text-align: center;"> |
| | | <div>(装箱单)</div> |
| | | </td> |
| | | </tr> |
| | | <tr style="width: 100%;font-size: 12px" v-for="(itemFlow,index) in item.detail" :key="index"> |
| | | <td colspan="5"> |
| | | <div style="display:flex;"> |
| | | <div style="width: 100%"><span style="font-weight: bold;">客户名称</span>:<input class="contactNumber" style="width: 60%;font-size: 12px" type="text" v-model="itemFlow.customer_name" /></div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 100%"><span style="font-weight: bold">工程名称</span>:{{itemFlow.project}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">订单号</span>:{{itemFlow.order_id}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">装箱单号</span>:{{itemFlow.remarks}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">包装日期</span>:{{itemFlow.reporting_work_time}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">本架数量</span>:{{itemFlow.quantity}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">加工班组</span>:{{itemFlow.teams_groups_name2}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">包装班组</span>:{{itemFlow.teams_groups_name}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">质量检验</span>:<input class="contactNumber" style="font-size: 12px" type="text" v-model="name1" /></div> |
| | | <div style="width: 50%"><span style="font-weight: bold">成品发货</span>:<input class="contactNumber" style="font-size: 12px" type="text" v-model="name2" /></div> |
| | | </div> |
| | | <div > |
| | | <div :class="'div_'+n " style="width: 46%;position: relative;" v-for="n in 2" > |
| | | <table v-for="page in orderDetailList" :key="page" style="width: 100%"> |
| | | <thead> |
| | | <tr> |
| | | <td colspan="1" style="text-align: center;font-weight: bolder;"> |
| | | <div style="width: 60px;height: 60px"> |
| | | <img id="img-pic" style="width:100%;height: 100%" src="@/assets/northGlass.ico" alt=""> |
| | | </div> |
| | | </td> |
| | | <td colspan="4" style="font-weight: bolder"> |
| | | <div style="font-size: 15px;font-weight: bold;line-height: 15px;"> |
| | | <p |
| | | style="font-size: 15px; |
| | | font-weight: bold; |
| | | line-height: 15px;" |
| | | >{{companyAddress.company}}</p> |
| | | <span style="font-size: 8px;"> {{companyAddress.companyInfo}}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="5" style="text-align: center;"> |
| | | <div>(装箱单)</div> |
| | | </td> |
| | | </tr> |
| | | <tr style="width: 100%;font-size: 12px" > |
| | | <td colspan="5"> |
| | | <div style="display:flex;"> |
| | | <div style="width: 100%"><span style="font-weight: bold;">客户名称</span>: |
| | | <input class="contactNumber" style="width: 60%;font-size: 12px" type="text" |
| | | v-model="customer.customer_name" /> |
| | | </div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 100%"><span style="font-weight: bold">工程名称</span>:{{customer.project}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">订单号</span>:{{customer.order_id}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">装箱单号</span>:{{customer.remarks}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">包装日期</span>:{{customer.reporting_work_time}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">本架数量</span>:{{customer.quantity}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">加工班组</span>:{{customer.teams_groups_name}}</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">包装班组</span>:{{customer.teams_groups_name2}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div style="width: 50%"><span style="font-weight: bold">质量检验</span>:刘化菊</div> |
| | | <div style="width: 50%"><span style="font-weight: bold">成品发货</span>:</div> |
| | | </div> |
| | | |
| | | |
| | | </td> |
| | | </tr> |
| | | <tr style="width: 100%;font-size: 12px"> |
| | | <td style="width: 20%;">编号</td> |
| | | <td style="width: 20%;">宽度</td> |
| | | <td style="width: 20%;">高度</td> |
| | | <td style="width: 20%;">片数</td> |
| | | <td style="width: 20%;">面积(m²)</td> |
| | | </tr> |
| | | <tr style="width: 100%;"> |
| | | <td colspan="5" ><hr></td> |
| | | </tr> |
| | | </thead> |
| | | </td> |
| | | </tr> |
| | | <tr style="width: 100%;font-size: 12px"> |
| | | <td style="width: 20%;">编号</td> |
| | | <td style="width: 20%;">宽度</td> |
| | | <td style="width: 20%;">高度</td> |
| | | <td style="width: 20%;">片数</td> |
| | | <td style="width: 20%;">面积(m²)</td> |
| | | </tr> |
| | | <tr style="width: 100%;"> |
| | | <td colspan="5" ><hr></td> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | <template v-for="(row,index) in page" :key="row"> |
| | | <tr v-if="row.type==='product'" style="width: 100%;height: 100px" > |
| | | <td colspan="1" style="font-weight: bold;font-size: 13px">加工品种:</td> |
| | | <td colspan="4"> |
| | | <textarea style="resize: none;width: 100%;height: 100px;border: 0" class="textarea" type="textarea" v-model="row.productName" /></td> |
| | | </tr> |
| | | <tr v-else-if="row.type==='size'" style="width: 100%;height: 30px"> |
| | | <td style="font-size: 10px">{{ row.size.building_number }}</td> |
| | | <td style="font-weight: bold">{{ row.size.width }}</td> |
| | | <td style="font-weight: bold">{{ row.size.height }}</td> |
| | | <td style="font-weight: bold">{{ row.size.quantity }}</td> |
| | | <td>{{ row.size.area }}</td> |
| | | </tr> |
| | | |
| | | <tbody> |
| | | <template v-for="(itemDatile,index) in item.detailList" :key="index"> |
| | | <tr style="width: 100%;"> |
| | | <td colspan="1" style="font-weight: bold">加工品种:</td> |
| | | <td colspan="4"> |
| | | <textarea style="resize: none;width: 100%;height: 80px;border: 0" class="textarea" type="textarea" v-model="itemDatile.product_name"/></td> |
| | | <!-- <el-input |
| | | style="resize: none" |
| | | class="textarea" |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 20 }" |
| | | v-model="itemDatile.product_name"/></td>--> |
| | | </tr> |
| | | <template v-for="(item,index) in itemDatile.detailList" :key="index"> |
| | | <tr style="width: 100%;margin-top: 20px"> |
| | | <td style="font-size: 10px">{{ item.building_number }}</td> |
| | | <td style="font-weight: bold">{{ item.width }}</td> |
| | | <td style="font-weight: bold">{{ item.height }}</td> |
| | | <td style="font-weight: bold">{{ item.quantity }}</td> |
| | | <td>{{ item.area }}</td> |
| | | </tr> |
| | | </template> |
| | | </template> |
| | | <tr id="footsum" v-else style="border: 0;font-size: 10px"> |
| | | <td colspan="5" style="border: 0;"> |
| | | <div style="display:flex;"> |
| | | <div>本架数量</div> |
| | | <div>{{row.sum.quantity}}</div> |
| | | <div>面积</div> |
| | | <div>{{row.sum.area}}(m²)</div> |
| | | <div>重量</div> |
| | | <div>{{row.sum.weight}}(kg)</div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | |
| | | </template> |
| | | </tbody> |
| | | <tfoot id="sticky-footer"> |
| | | <tr style="border: 0;font-size: 8px"> |
| | | <td colspan="5" style="border: 0;"> |
| | | <div style="display:flex;"> |
| | | <div>地址:{{companyAddress.address}}</div> |
| | | <div>电话:{{companyAddress.phone}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div>{{companyAddress.url}}</div> |
| | | <div>传真:{{companyAddress.fax}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div>E-mail:{{companyAddress.email}}</div> |
| | | <div>邮编:{{companyAddress.postcode}}</div> |
| | | </div> |
| | | |
| | | <!-- <tr style="width: 100%;" v-for="(itemFlows,index) in item.detail" :key="index"> |
| | | <td>合计</td> |
| | | <td></td> |
| | | <td></td> |
| | | <td>{{itemFlows.quantity}}</td> |
| | | <td>{{itemFlows.area}}</td> |
| | | </tr>--> |
| | | </tbody> |
| | | <tfoot > |
| | | <tr style="border: 0;font-size: 10px"> |
| | | <td colspan="5" style="border: 0;"> |
| | | <div style="display:flex;"> |
| | | <div>本架数量</div> |
| | | <div>{{item.detail[0].quantity}}</div> |
| | | <div>面积</div> |
| | | <div>{{item.detail[0].area}}(m²)</div> |
| | | <div>重量</div> |
| | | <div>{{item.detail[0].weight}}(kg)</div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | |
| | | |
| | | <tr style="border: 0;font-size: 8px"> |
| | | <td colspan="5" style="border: 0;"> |
| | | <div style="display:flex;"> |
| | | <div>地址:{{companyAddress.address}}</div> |
| | | <div>电话:{{companyAddress.phone}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div>{{companyAddress.url}}</div> |
| | | <div>传真:{{companyAddress.fax}}</div> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <div>E-mail:{{companyAddress.email}}</div> |
| | | <div>邮编:{{companyAddress.postcode}}</div> |
| | | </div> |
| | | |
| | | </td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | <div class="element-to-break-after" v-if="items.id===1" ></div> |
| | | <div class="element-to-breakr" v-if="items.id===2" ></div> |
| | | </template> |
| | | |
| | | |
| | | </template> |
| | | </td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | |
| | | .contactNumber{ |
| | | width: 40%; |
| | | height:20px; |
| | | border: none; |
| | | box-shadow: none; |
| | | font-size: 15px; |
| | | } |
| | | .div_2{ |
| | | margin-left: 6%; |
| | | } |
| | | .element-to-break-after { |
| | | width: 8%; |
| | | } |
| | |
| | | |
| | | table{ |
| | | width: 100%; |
| | | page-break-after: always; |
| | | } |
| | | |
| | | @media print { |
| | |
| | | margin: 4mm 5mm 0mm 5mm /* this affects the margin in the printer settings */ |
| | | |
| | | } |
| | | input { |
| | | display: inline; /* 或者根据需要使用其他合适的显示方式 */ |
| | | visibility: visible; |
| | | #footsum{ |
| | | position: fixed; |
| | | bottom: 2cm; |
| | | width: 100%; /* 或者设置成具体的宽度 */ |
| | | } |
| | | |
| | | thead{ |
| | | #sticky-footer { |
| | | position: fixed; |
| | | bottom: 1cm; |
| | | width: 100%; /* 或者设置成具体的宽度 */ |
| | | } |
| | | /* thead{ |
| | | display: table-header-group; |
| | | page-break-inside: avoid; |
| | | } |
| | |
| | | tfoot { |
| | | display: table-footer-group; |
| | | page-break-inside: avoid; |
| | | /* position: fixed; |
| | | width: 50%; |
| | | bottom: 0; |
| | | height: 100px;*/ |
| | | } |
| | | }*/ |
| | | |
| | | } |
| | | |
| | | .contactNumber{ |
| | | width: 40%; |
| | | height:20px; |
| | | border: none; |
| | | box-shadow: none; |
| | | font-size: 15px; |
| | | } |
| | | |
| | | |
| | | .textarea{ |
| | | --el-border-color: rgba(255,255,255,0.0); |