| north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheetLuoyang.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheetLuoyangDetails.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| north-glass-erp/package-lock.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheetLuoyang.vue
@@ -111,6 +111,7 @@ } //给数据进行分页 pageData.value = groupArrayByFive(produceList2.value[0].data) console.log(pageData.value) delivery.value = produceList2.value[0].delivery console.log(delivery.value) north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheetLuoyangDetails.vue
New file @@ -0,0 +1,400 @@ <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"; import {add,addAuto} from '@/utils/decimal'; const company = companyInfo() let produceList = ref([]) let otherMoney = [] let otherMoney1 = [] let delivery = ref([]) let money = ref("") let otherMoneys = 0 let sumMoney = 0 let takeCare =ref("具体规格详见清单") let remark =ref(company.deliveryRemark) let props = defineProps({ deliveryId:null, type:null }) const form = ref({ }) let produceList2 = ref([]) const deliveryId = ref() const pageData = ref() const getData = () => { if(props.deliveryId===null || props.deliveryId===undefined || props.deliveryId===''){ return } deliveryId.value = props.deliveryId[0].deliveryId form.value.deliveryId=props.deliveryId form.value.type=company.productName form.value.state=props.type request.post(`/delivery/getSelectDeliveryPrinting`,form.value).then((res) => { if(res.code==200){ console.log(res.data) produceList.value = deepClone(res.data) for(let i=0;i<produceList.value.length;i++){ produceList.value[i].data.forEach(item =>{ }) let produceList1= ({ data:null, otherMoney:null, otherMoney1:null, delivery:null, money:null, otherMoneys:0, sumMoney:0 }) produceList1.data=produceList.value[i].data produceList1.delivery=produceList.value[i].delivery produceList1.money=produceList.value[i].money produceList1.otherMoney=produceList.value[i].otherMoney for(let j=0;j<produceList1.data.length;j++){ produceList1.sumMoney+=produceList1.data[j].DeliveryDetail.money } otherMoney1=[] for(let i=0;i<produceList1.otherMoney.length;i++){ if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery!=null){ produceList1.otherMoneys+=produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery if(otherMoney1.length===0){ otherMoney1.push(produceList1.otherMoney[i]) } else{ for(let s=0;s<otherMoney1.length;s++){ if(produceList1.otherMoney[i].DeliveryDetailOtherMoney.alias===otherMoney1[s].DeliveryDetailOtherMoney.alias){ otherMoney1[s].DeliveryDetailOtherMoney.count=add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.count,otherMoney1[s].DeliveryDetailOtherMoney.count) otherMoney1[s].DeliveryDetailOtherMoney.monery =add(produceList1.otherMoney[i].DeliveryDetailOtherMoney.monery,otherMoney1[s].DeliveryDetailOtherMoney.monery) break } if(s+1===otherMoney1.length){ otherMoney1.push(produceList1.otherMoney[i]) break } } } } } produceList1.otherMoney1=otherMoney1 produceList2.value.push(produceList1) } for(let j=0;j<produceList2.value.length;j++){ if(produceList2.value[j].delivery.money.toFixed(0)!==(produceList2.value[j].otherMoneys +produceList2.value[j].sumMoney+produceList2.value[j].delivery.freight).toFixed(0)){ console.log(produceList2.value[j]) console.log(produceList2.value[j].delivery.money) console.log((produceList2.value[j].otherMoneys +produceList2.value[j].sumMoney).toFixed(0)) console.log(produceList2.value[j].delivery.deliveryId) } } //给数据进行分页 pageData.value = groupArrayByFive(produceList2.value[0].data) console.log(pageData.value) delivery.value = produceList2.value[0].delivery console.log(delivery.value) }else{ ElMessage.warning(res.msg) router.push("/login") } }) } function groupArrayByFive(arr) { let result = []; let productName=ref() arr.forEach(item=>{ for (let i = 0; i < item.DeliveryDetailList.length; i += 8) { let resultMap = { id:null, DeliveryDetail:null, DeliveryDetailList:[] }; resultMap.DeliveryDetail=item.DeliveryDetail resultMap.id=item.DeliveryDetailList.slice(i, i + 8).length resultMap.DeliveryDetailList.push(item.DeliveryDetailList.slice(i, i + 8)) result.push(resultMap) } }) return result; } let deliveryDate = ref() onMounted(() => { const today = new Date today.setTime(today.getTime()) deliveryDate.value = today.getFullYear() + '-' + ("0" + (today.getMonth() + 1)).slice(-2) + '-' + ("0" + today.getDate()).slice(-2) getData() }) const printSheet = () => { } let companyName = ref('洛阳玻璃公司') const getQuantitySum = (page)=>{ if(pageData.value[page] === undefined){ return 0 } return pageData.value[page].DeliveryDetailList[0].reduce((accumulator, currentValue) => { return add(accumulator,currentValue.quantity) }, 0) } const getAreaSum = (page)=>{ if(pageData.value[page] === undefined){ return 0 } return pageData.value[page].DeliveryDetailList[0].reduce((accumulator, currentValue) => { return addAuto(accumulator,currentValue.area,2) }, 0) } const getMoneySum = (page)=>{ if(pageData.value[page] === undefined){ return 0 } return pageData.value[page].DeliveryDetailList[0].reduce((accumulator, currentValue) => { return addAuto(accumulator,currentValue.money,2) }, 0) } defineExpose({ printSheet }); </script> <template> <div > <el-row id="footsum" :gutter="20" > <el-col :span="20"></el-col> <el-col :span="4" style="font-weight: bolder;font-size: 19px" >{{delivery.creator}}</el-col> </el-row> <el-row id="footsum1" :gutter="20" > <el-col :span="2" ></el-col> <el-col :span="5" style="font-weight: bolder;font-size: 19px">{{ delivery.contacts }}</el-col> <el-col :span="5" style="font-weight: bolder;font-size: 19px">{{ delivery.contactNumber }}</el-col> <el-col :span="1" ></el-col> <el-col :span="11" style="font-weight: bolder;font-size: 19px">{{ delivery.deliveryAddress }}</el-col> </el-row> <table class="content1" v-for="(page,pageIndex) in pageData" > <thead> <tr style="height: 3.2cm"><td></td></tr> <tr> <td colspan="6" > <el-row :gutter="20"> <el-col :span="2"></el-col> <el-col :span="9"> <input v-model="companyName" style="border: 0;width: 100%; height: 100%;font-size:19px;font-weight: bolder "/> </el-col> <el-col :span="5" style="font-size:19px;font-weight: bolder"> {{deliveryId}} </el-col> <el-col :span="5"></el-col> <el-col :span="3" style="white-space: nowrap;font-size:19px;font-weight: bolder">{{deliveryDate}}</el-col> </el-row> </td> </tr> <tr style="height: 0.5cm"><td></td></tr> <tr style="margin-top: 20px"> <td colspan="6"> <el-row :gutter="20"> <el-col :span="3"></el-col> <el-col :span="9" style="font-size: 21px;font-weight: bolder">{{delivery.customerName }}</el-col> <el-col :span="3"> </el-col> <el-col :span="9" style="font-size: 21px;font-weight: bolder;white-space: nowrap;"> {{delivery.project }}</el-col> </el-row> </td> </tr> <tr style="height: 0.3cm"><td></td></tr> <tr> <td colspan="6"> <el-row :gutter="20"> <el-col :span="2"></el-col> <el-col :span="12" style="font-size: 17px;font-weight: bolder"> {{delivery.orderId }}</el-col> </el-row> </td> </tr> <tr style="height: 0.2cm"><td></td></tr> </thead> <tbody > <template v-for="(items,index1) in page.DeliveryDetailList[0]"> <tr> <td style="width: 20cm" :rowspan="page.id" v-if="index1===0"> <el-input class="textarea" type="textarea" :autosize="{ minRows: 1, maxRows: 20 }" v-model="page.DeliveryDetail.orderDetail.productName" /> </td> <td style="width: 0.8cm"></td> <td style="width: 10cm"> <el-input class="textarea" type="textarea" style="font-weight: bolder;" :autosize="{ minRows: 1, maxRows: 20 }" v-model="items.width" /> </td> <td style="width: 10cm"> <el-input class="textarea" type="textarea" style="font-weight: bolder;" :autosize="{ minRows: 1, maxRows: 20 }" v-model="items.height" /> </td> <td style="width: 60px"> {{items.quantity}} </td> <td style="width: 100px"> <input style="border: 0" v-model="items.area"> </td> <td v-if="props.type===1||props.type===3" style="width: 80px" > {{items.price}} </td> <td v-if="props.type===1||props.type===3" > {{items.money}} </td> </tr> </template> <tr> <td></td> <td></td> <td></td> <td></td> <td> {{getQuantitySum(pageIndex)}} </td> <td> <input style="border: 0" :value="getAreaSum(pageIndex)"> </td> <td></td> <td v-if="props.type===1||props.type===3"> {{getMoneySum(pageIndex)}} </td> </tr> </tbody> </table> </div> </template> <style scoped> *{ color: rgba(0, 0, 0, 0.8); /* 更深的黑色 */ font-family: 'Microsoft YaHei', '微软雅黑', sans-serif; outline: none; } #sheet{ width: 21cm; } table{ width: 21cm } .content1{ page-break-after: always; } span{ width: 7cm; text-align: center; } tbody *{ font-size: 16px; font-weight: bolder; } tbody *{ font-size: 16px; font-weight: bolder; } #footsum1,#footsum{ font-weight: bolder;font-size: 17px; } @media print { #footsum{ position: fixed; bottom: 4.2cm; width: 100%; /* 或者设置成具体的宽度 */ font-size: 17px; } #footsum1{ position: fixed; bottom: 1.8cm; width: 100%; /* 或者设置成具体的宽度 */ } } .textarea{ --el-border-color: rgba(255,255,255,0.0); --el-input-focus-border-color: rgba(255,255,255,0.0); --el-input-focus-border-width: 0px; --el-input-hover-border-color: rgba(255,255,255,0.0); --el-input-hover-border-width: 0px; } /*textarea { font-size: 16px; border:none; text-align: right; font-weight: bolder; width: 100%; height: 100%; }*/ :deep(.el-textarea__inner){ font-weight: bolder; color: #333333; font-family: 'Microsoft YaHei', '微软雅黑', sans-serif; } </style> north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -14,6 +14,7 @@ import PrintSheet1 from "@/components/sd/delivery/PrintSheet1.vue"; import PrintSheet2 from "@/components/sd/delivery/PrintSheet2.vue"; import PrintSheetLuoyang from "@/components/sd/delivery/PrintSheetLuoyang.vue"; import PrintSheetLuoyangDetails from "@/components/sd/delivery/PrintSheetLuoyangDetails.vue"; import useOrderInfoStore from "@/stores/sd/order/orderInfo"; import { saveAs } from "file-saver" import companyInfo from "@/stores/sd/companyInfo"; @@ -113,6 +114,8 @@ if(company.companyName=='洛阳北方玻璃技术股份有限公司'){ xGrid.value.menuConfig.body.options[0][2].visible=true xGrid.value.menuConfig.body.options[0][3].visible=true xGrid.value.menuConfig.body.options[0][4].visible=true xGrid.value.menuConfig.body.options[0][5].visible=true } xGrid.value.loadData(produceList) gridOptions.loading=false @@ -344,6 +347,71 @@ break } case 'sheet5': { const selectRecords = $grid.getCheckboxRecords() if (selectRecords.length === 0) { if(rowClickIndex.value.deliveryState>0){ ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) let delivery=([]) delivery.push(rowClickIndex.value) flowData.value.delivery=delivery dialogTableVisible.value = true sheetIndex.value=5 }else{ ElMessage.warning(t('order.orderNotApproved')) } }else{ let a=0 selectRecords.forEach((item) => { if(item.deliveryState==0){ ElMessage.warning(t('order.orderNotApproved')) a=1 } }) if(a==0){ flowData.value.delivery=selectRecords dialogTableVisible.value = true sheetIndex.value=5 } } break } case 'sheet6': { const selectRecords = $grid.getCheckboxRecords() if (selectRecords.length === 0) { if(rowClickIndex.value.deliveryState>0){ ElMessage.warning(t('order.printingNumber')+rowClickIndex.value.printingNumber) let delivery=([]) delivery.push(rowClickIndex.value) flowData.value.delivery=delivery dialogTableVisible.value = true sheetIndex.value=6 }else{ ElMessage.warning(t('order.orderNotApproved')) } }else{ let a=0 selectRecords.forEach((item) => { if(item.deliveryState==0){ ElMessage.warning(t('order.orderNotApproved')) a=1 } }) if(a==0){ flowData.value.delivery=selectRecords dialogTableVisible.value = true sheetIndex.value=6 } } break } } } }, @@ -386,8 +454,10 @@ [ { code: 'sheet1', name: t('basicData.print'), prefixIcon: 'vxe-icon-file-txt', visible: true}, { code: 'sheet2', name: t('basicData.print')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: true}, { code: 'sheet3', name: t('洛阳打印'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet4', name: t('洛阳打印')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet3', name: t('洛阳打印无尺寸'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet4', name: t('洛阳打印无尺寸')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet5', name: t('洛阳打印有尺寸'), prefixIcon: 'vxe-icon-file-txt', visible: false}, { code: 'sheet6', name: t('洛阳打印有尺寸')+ t('delivery.noMoney'), prefixIcon: 'vxe-icon-file-txt', visible: false}, ] ] } @@ -586,6 +656,8 @@ <print-sheet2 id="child" v-if="sheetIndex===2" :deliveryId="flowData.delivery" /> <print-sheet-luoyang id="child" v-if="sheetIndex===3" :deliveryId="flowData.delivery" :type="1" /> <print-sheet-luoyang id="child" v-if="sheetIndex===4" :deliveryId="flowData.delivery" :type="2" /> <print-sheet-luoyang-details id="child" v-if="sheetIndex===5" :deliveryId="flowData.delivery" :type="3" /> <print-sheet-luoyang-details id="child" v-if="sheetIndex===6" :deliveryId="flowData.delivery" :type="4" /> </el-dialog> </div> north-glass-erp/package-lock.json
New file @@ -0,0 +1,6 @@ { "name": "north-glass-erp", "lockfileVersion": 2, "requires": true, "packages": {} } north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -31,9 +31,11 @@ List<DeliveryDetail> getSelectDeliveryPrintingNoMoney(@Param("deliveryId") String deliveryId,@Param("type") String type); List<DeliveryDetail> getSelectDeliveryPrintingMoneySpecifications(@Param("deliveryId") String deliveryId,@Param("type") String type); List<Map<String, Object>> getSelectDeliveryPrintingMoneySpecifications(@Param("deliveryId") String deliveryId, @Param("productId") Integer productId,@Param("orderId") String orderId); List<DeliveryDetail> getSelectDeliveryPrintingNoMoneySpecifications(@Param("deliveryId") String deliveryId,@Param("type") String type); List<Map<String, Object>> getSelectDeliveryPrintingNoMoneySpecifications(@Param("deliveryId") String deliveryId, @Param("productId") Integer productId,@Param("orderId") String orderId); List<OrderDetail> getSelectOrderPrinting(Object productId, String orderId); north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -545,8 +545,17 @@ orderId=detail.getOrderDetail().getOrderId(); Map<String, Object> itemmap = new HashMap<>(); List<Map<String, Object>> deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(), detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); List<Map<String, Object>> deliveryDetailList2; if(state==3){ deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingMoneySpecifications(detail.getDeliveryId(), detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); }else if(state==4){ deliveryDetailList2=deliveryDetailMapper.getSelectDeliveryPrintingNoMoneySpecifications(detail.getDeliveryId(), detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); }else{ deliveryDetailList2 = deliveryDetailMapper.getSelectDeliveryDetailPrinting(detail.getDeliveryId(), detail.getOrderDetail().getProductId(), detail.getOrderDetail().getOrderId()); } for (Map<String, Object> stringObjectMap : deliveryDetailList2) { if(stringObjectMap.get("other_columns")!=null){ north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -1147,44 +1147,38 @@ </select> <select id="getSelectDeliveryPrintingMoneySpecifications" resultMap="selectDeliveryDetailOrderDetail" > select dd.delivery_id, od.order_id, IF(#{type} = 'product_abbreviation', pt.remarks, od.product_name) as product_name, dd.price, <select id="getSelectDeliveryPrintingMoneySpecifications" > select od.order_id, od.width, od.height, od.product_name, sum(dd.area) as area, sum(dd.money) as money, sum(dd.quantity) as quantity, o.contract_id, od.width, od.height dd.price from delivery_detail dd left join (select product_name,order_id,product_id,order_number,width,height from order_detail) as od on dd.order_id = od.order_id and dd.order_number = od.order_number left join product pt on pt.id = od.product_id left join sd.`order` o on o.order_id = dd.order_id where dd.delivery_id like concat('%', #{deliveryId}, '%') group by od.order_id, od.product_name,od.width,od.height, dd.price left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number left join product p on od.product_id = p.id where delivery_id = #{deliveryId} and od.order_id = #{orderId} and od.product_id = #{productId} group by od.width,od.height, dd.price </select> <select id="getSelectDeliveryPrintingNoMoneySpecifications" resultMap="selectDeliveryDetailOrderDetail" > select dd.delivery_id, od.order_id, IF(#{type} = 'product_abbreviation', pt.remarks, od.product_name) as product_name, sum(dd.area) as area, sum(dd.quantity) as quantity, o.contract_id, <select id="getSelectDeliveryPrintingNoMoneySpecifications" > select od.order_id, od.width, od.height od.height, od.product_name, sum(dd.area) as area, sum(dd.quantity) as quantity from delivery_detail dd left join (select product_name,order_id,product_id,order_number,width,height from order_detail) as od on dd.order_id = od.order_id and dd.order_number = od.order_number left join product pt on pt.id = od.product_id left join sd.`order` o on o.order_id = dd.order_id where dd.delivery_id like concat('%', #{deliveryId}, '%') group by od.order_id, od.product_name, width, height left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number left join product p on od.product_id = p.id where delivery_id = #{deliveryId} and od.order_id = #{orderId} and od.product_id = #{productId} group by od.width,od.height </select> <select id="getSelectOrderPrinting" >