Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | <thead> |
| | | <tr v-if="index===0"> |
| | | <th style="width: 6%;">序号</th> |
| | | <th style="width: 20%;">楼层编号</th> |
| | | <th style="width: 20%;" colspan="1">宽X高</th> |
| | | <th style="width: 15%;">楼层编号</th> |
| | | <th style="width: 17%;" colspan="1">宽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> |
| | | <th style="width: 20%;" colspan="2">加工要求</th> |
| | | </tr> |
| | | |
| | | |
| | |
| | | |
| | | <style scoped> |
| | | #sheet{ |
| | | width: 100%; |
| | | width: 98%; |
| | | height: 100%; |
| | | text-align: center; |
| | | } |
| | |
| | | .notChangeRow{ |
| | | white-space: nowrap; |
| | | } |
| | | @media print { |
| | | @page { |
| | | margin: 5mm; /* 设置打印页面的边距 */ |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <th style="text-align: left;border:none;font-weight: bold;" colspan="2">联系电话:<span>{{delivery.contactNumber}}</span></th> |
| | | </tr> |
| | | <tr> |
| | | <th style="width: 6%;font-weight: bold;">序号</th> |
| | | <th style="width: 20%;font-weight: bold;">楼层编号</th> |
| | | <th style="width: 20%;font-weight: bold;" colspan="2">宽X高</th> |
| | | <th style="width: 10%;font-weight: bold;">数量</th> |
| | | <th style="width: 10%;font-weight: bold;">面积</th> |
| | | <th style="width: 10%;font-weight: bold;">单价</th> |
| | | <th style="width: 12%;font-weight: bold;">金额</th> |
| | | <th style="width: 12%;font-weight: bold;" colspan="2">加工要求</th> |
| | | <th style="width: 6%;">序号</th> |
| | | <th style="width: 15%;">楼层编号</th> |
| | | <th style="width: 17%;" colspan="1">宽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: 20%;" colspan="2">加工要求</th> |
| | | </tr> |
| | | <template v-for="(item, index) in produceList" :key="index" > |
| | | <tr> |
| | | <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="4">产品名称:<span>{{item.DeliveryDetail.productName}}</span></td> |
| | | <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="3">对方单号:</td> |
| | | <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="2">对方单号:</td> |
| | | <td style="font-size: 15px;font-weight: bold;text-align: left" colspan="3">订单编号:<span>{{item.DeliveryDetail.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 colspan="1" style="font-size: 15px;font-weight: bold;">{{items.width}}x{{items.height}}</td> |
| | | <td>{{items.quantity}}</td> |
| | | <td>{{items.compute_gross_area}}</td> |
| | | <td>{{items.price}}</td> |
| | |
| | | <td colspan="2">{{items.processingNote}}</td> |
| | | </tr> |
| | | <tr class="day-in" > |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="4">小计:</td> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="3">小计:</td> |
| | | <td>{{item.DeliveryDetail.quantity}}</td> |
| | | <td>{{item.DeliveryDetail.area}}</td> |
| | | <td></td> |
| | |
| | | |
| | | </template> |
| | | <tr class="day-in"> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="4">合计:</td> |
| | | <td style="font-size: 15px;font-weight: bold;" colspan="3">合计:</td> |
| | | <td>{{delivery.quantity}}</td> |
| | | <td>{{delivery.area}}</td> |
| | | <td></td> |
| | |
| | | print:'Print', |
| | | export:'Derive', |
| | | empty:'Clear', |
| | | |
| | | incrementalAll:'Increase successively after selecting', |
| | | incrementalChecked:'Selected and increased successively', |
| | | true:'Yes', |
| | | false:'No', |
| | | computedSize:'Scientific counting', |
| | | paste:'Paste', |
| | | msg:{ |
| | | max255:"The value contains a maximum of 255 characters", |
| | | range99999Dec2: |
| | | "Please enter a number between 0 and 99999 with a maximum of two decimals", |
| | | range99999Dec3: |
| | | "Please enter a number between 0 and 99999 with a maximum of three decimals", |
| | | range999999Dec2: |
| | | "Please enter a number between 0 and 999999 with a maximum of two decimals", |
| | | greater0:"Please enter an integer greater than 0", |
| | |
| | | theProductHasBeenReviewedAndCannotBeDeleted:'The product has been reviewed and cannot be removed', |
| | | |
| | | productAbbreviation:'Product abbreviation', |
| | | productDuplication:'Product repetition', |
| | | } |
| | | }, |
| | | order:{ |
| | |
| | | orderDetailsSummaryReport:'Order details summary report', |
| | | buildingNumber:'Floor number', |
| | | saveHeader:'Save header', |
| | | |
| | | orderNotApproved:'Order not reviewed', |
| | | orderHasBeenReceived:'The order is in stock', |
| | | printingNumber:'Print times', |
| | | processingOrder:'Processing sheet', |
| | | sheet2:'Horizontal - multi-layer details', |
| | | sheet4:'Production and processing of single vertical plate', |
| | | sheet3:'View shipping information', |
| | | sheet5:'Production and processing of single curved glass (single sheet)', |
| | | oneClickStorage:'One-click completion', |
| | | msg:{ |
| | | productCheck:'Please select a product', |
| | | tableLengthNot:'No table data', |
| | |
| | | calculationAreaPrompt4:'Calculate', |
| | | warning:'Tips', |
| | | calculationAreaPrompt5:'Do you want to continue creating duplicate orders', |
| | | |
| | | pleaseCancelTheFilteringFirst:'Please cancel the selection first.', |
| | | } |
| | | |
| | | }, |
| | |
| | | deleteNoProcedure:'Delete failed Check whether the next operation has been reported', |
| | | pleaseCheckTheRequiredData:'Please check the required data', |
| | | landingSequence:'Landing sequence', |
| | | |
| | | labelStyle:'Label Style', |
| | | customLabelPrinting:'Custom label printing', |
| | | labelPrinting:'Label printing', |
| | | labelPrinting:'Lable Printing', |
| | | sortingSuccessful:'Sorting successful', |
| | | sorting:'Sorting', |
| | | pleaseSelect:'Please select', |
| | |
| | | halfProductLabel:'Half-finished product label', |
| | | pleaseSelectCustomPrintLabelStyle:'Please select a custom print label style', |
| | | mergePrinting:'Merge printing', |
| | | printStatus:'Print status', |
| | | printStatus:'Print times', |
| | | labelPrinting2:'Label printing 2', |
| | | addAutomatically:'Auto fill', |
| | | selectFill:'Select fill' |
| | | selectFill:'Selected fill' |
| | | }, |
| | | reportingWorks:{ |
| | | glassNumber:'number', |
| | | glassNumber:'Code', |
| | | glassAddress:'Glass Address', |
| | | WorkReportingManagement:'Work Reporting Management ', |
| | | addReportingWorks:'New Work Reporting', |
| | |
| | | salesman:'Salesman', |
| | | money:'Amount', |
| | | |
| | | pleaseSelectTheSameCustomerProject:'Please select the project for the same customer', |
| | | |
| | | }, |
| | | replenish:{ |
| | | patchManagement:'Patch Management', |
| | |
| | | ConfirmPasswordCannotBeEmpty:'Confirm that the password cannot be empty', |
| | | TheTwoPasswordsAreNotTheSame:'Two different passwords', |
| | | OldPasswordError:'Old password error', |
| | | |
| | | userName:'User name', |
| | | changeUserName:'Modifying a user name', |
| | | userNameCannotBeEmpty:'The user name cannot be empty', |
| | | }, |
| | | orderBasicData:{ |
| | | order:'Order', |
| | |
| | | firstLevel:'Primary class', |
| | | towLevel:'Secondary class', |
| | | alias:'alias', |
| | | msg1:'Upload picture size can not exceed 5MB!', |
| | | msg2:'Upload picture can only be JPG or PNG format!', |
| | | selectFile:'Selecting file', |
| | | msg3:'Only jpg/png files can be uploaded and the size does not exceed 5 MB', |
| | | }, |
| | | machine:{ |
| | | basicId:'Equipment number', |
| | |
| | | print:'Печать', |
| | | export:'Экспорт', |
| | | empty:'Очистить', |
| | | |
| | | incrementalAll:'之后递增', |
| | | incrementalChecked:'选中递增', |
| | | true:'是', |
| | | false:'否', |
| | | computedSize:'科学计数', |
| | | paste:'粘贴', |
| | | msg:{ |
| | | max255:"Введите 255 символов.", |
| | | range99999Dec2: |
| | | "Введите число между 0 - 99999 и сохраните до двух десятичных знаков.", |
| | | range99999Dec3: |
| | | "Введите число между 0-9999999 и сохраните до трех десятичных точек.", |
| | | range999999Dec2: |
| | | "Введите число между 0 - 999999 и сохраните до двух десятичных знаков.", |
| | | greater0:"Введите целое число больше 0", |
| | |
| | | theProductHasBeenReviewedAndCannotBeDeleted:'Продукция проверена и не может быть удалена', |
| | | |
| | | productAbbreviation:'Продукция', |
| | | productDuplication:'产品重复', |
| | | } |
| | | }, |
| | | order:{ |
| | |
| | | orderDetailsSummaryReport:'Сводный отчет о заказах', |
| | | buildingNumber:'Номер этажа', |
| | | saveHeader:'Изменить заголовок таблицы', |
| | | |
| | | orderNotApproved:'订单未审核', |
| | | orderHasBeenReceived:'订单已入库', |
| | | printingNumber:'打印次数', |
| | | processingOrder:'加工单', |
| | | sheet2:'横版-多层明细', |
| | | sheet4:'生产加工单纵版', |
| | | sheet3:'浏览发货信息', |
| | | sheet5:'生产加工单弯钢(单片)', |
| | | oneClickStorage:'一键完工', |
| | | msg:{ |
| | | productCheck:'Пожалуйста, выберите продукт', |
| | | tableLengthNot:'Нет данных таблицы', |
| | |
| | | calculationAreaPrompt4:'Расчет', |
| | | warning:'Подсказка', |
| | | calculationAreaPrompt5:'Повторить заказ Создать', |
| | | |
| | | pleaseCancelTheFilteringFirst:'请先取消筛选', |
| | | } |
| | | |
| | | }, |
| | |
| | | deleteNo:'Ошибка удаления, проверьте обратную связь карты процесса', |
| | | deleteNoProcedure:'Ошибка удаления, проверьте обратную связь операции', |
| | | pleaseCheckTheRequiredData:'Выберите необходимые данные.', |
| | | landingSequence:'Landing sequence', |
| | | |
| | | labelStyle:'Стиль метки', |
| | | customLabelPrinting:'Настройка печати вкладок', |
| | | labelPrinting:'标签打印', |
| | | sortingSuccessful:'Сортировать успешно', |
| | | sorting:'Сортировка', |
| | | pleaseSelect:'Выберите', |
| | |
| | | halfProductLabel:'Маркировка полуфабрикатов', |
| | | pleaseSelectCustomPrintLabelStyle:'Выберите другой стиль этикетки', |
| | | mergePrinting:'Слияние печати', |
| | | printStatus:'打印次数', |
| | | labelPrinting2:'标签打印2', |
| | | addAutomatically:'自动填充', |
| | | selectFill:'自动填充' |
| | | }, |
| | | reportingWorks:{ |
| | | glassNumber:'number', |
| | | glassAddress:'Стеклянная маркировка', |
| | | WorkReportingManagement:'Управление обратной связью', |
| | | addReportingWorks:'Новые отзывы', |
| | |
| | | salesman:'Продаж', |
| | | money:'Сумма', |
| | | |
| | | pleaseSelectTheSameCustomerProject:'请选择相同客户的项目', |
| | | |
| | | }, |
| | | replenish:{ |
| | | patchManagement:'Управление стеклянными пластинами', |
| | |
| | | ConfirmPasswordCannotBeEmpty:'Пароль подтверждения не может быть пустым', |
| | | TheTwoPasswordsAreNotTheSame:'Два разных пароля.', |
| | | OldPasswordError:'Старая ошибка пароля', |
| | | |
| | | userName:'用户名称', |
| | | changeUserName:'修改用户名称', |
| | | userNameCannotBeEmpty:'用户名称不能为空', |
| | | }, |
| | | orderBasicData:{ |
| | | order:'Заказы', |
| | |
| | | firstLevel:'Категория I', |
| | | towLevel:'Категория II', |
| | | alias:'Имя', |
| | | msg1:'上传头像图片大小不能超过 5MB!', |
| | | msg2:'上传头像图片只能是 JPG或者PNG 格式!', |
| | | selectFile:'选取文件', |
| | | msg3:'只能上传jpg/png文件,且不超过5m', |
| | | }, |
| | | machine:{ |
| | | basicId:'Номер оборудования', |
| | |
| | | max255:"最多输入255个字符", |
| | | range99999Dec2: |
| | | "请输入0-99999之间的数字,最多保留两位小数", |
| | | range99999Dec3: |
| | | "请输入0-99999之间的数字,最多保留三位小数", |
| | | range999999Dec2: |
| | | "请输入0-999999之间的数字,最多保留两位小数", |
| | | greater0:"请输入大于0的整数", |
| | |
| | | orderNotApproved:'订单未审核', |
| | | orderHasBeenReceived:'订单已入库', |
| | | printingNumber:'打印次数', |
| | | processingOrder:'加工单', |
| | | sheet2:'横版-多层明细', |
| | | sheet4:'生产加工单纵版', |
| | | sheet3:'浏览发货信息', |
| | | sheet5:'生产加工单弯钢(单片)', |
| | | oneClickStorage:'一键完工', |
| | | msg:{ |
| | | productCheck:'请选择产品', |
| | | tableLengthNot:'没有表格数据', |
| | |
| | | firstLevel:'一级类别', |
| | | towLevel:'二级类别', |
| | | alias:'别名', |
| | | msg1:'上传头像图片大小不能超过 5MB!', |
| | | msg2:'上传头像图片只能是 JPG或者PNG 格式!', |
| | | msg1:'上传图片大小不能超过 5MB!', |
| | | msg2:'上传图片只能是 JPG或者PNG 格式!', |
| | | selectFile:'选取文件', |
| | | msg3:'只能上传jpg/png文件,且不超过5m', |
| | | }, |
| | |
| | | {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 }, |
| | | {field: 'deliveryId',width:120, title: t('delivery.deliveryNoteId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'deliveryNumber',width:120, title: t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderDetail.productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'orderDetail.productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'delivery.paymentTerms',width:120, title: t('delivery.paymentTerms'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'delivery.project',width:140, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'quantity',width:120, title: t('order.quantity'), sortable: true}, |
| | |
| | | deliveryAddress:'', |
| | | otherMoney:'', |
| | | otherMoneyRemarks:'', |
| | | processingNote:'', |
| | | processingNote:t('order.processingNote')+':', |
| | | createOrder:0, |
| | | creatorId:userStore.user.userId, |
| | | creator:userStore.user.userName, |
| | |
| | | computeArea: [ |
| | | { |
| | | validator ({ cellValue }) { |
| | | const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/ |
| | | const decValue = company.decValue*1 |
| | | const regex =new RegExp(`^(0(\\.\\d{1,${decValue}})?|([1-9]\\d{0,4})(\\.\\d{1,${decValue}})?|99999(\\.9{1,${decValue}})?)$`) |
| | | if (!regex.test(cellValue)) { |
| | | return new Error(t('basicData.msg.range99999Dec2')) |
| | | return new Error(t(`basicData.msg.range99999Dec${decValue}`)) |
| | | } |
| | | } |
| | | } |
| | |
| | | ElMessage.error( t('order.msg.tableLengthNot')) |
| | | return |
| | | } |
| | | computedMoney() |
| | | computedMoney(null) |
| | | if(!gridOptions.menuConfig.body.options[0][5].disabled){ |
| | | ElMessage.error(t('order.msg.amountReset')) |
| | | return |
| | |
| | | } |
| | | }) |
| | | } |
| | | computedMoney() |
| | | computedMoney(null) |
| | | break |
| | | } |
| | | case 'copyChecked' :{ |
| | |
| | | }) |
| | | } |
| | | } |
| | | computedMoney() |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | break |
| | | } |
| | |
| | | } |
| | | |
| | | } |
| | | computedMoney() |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | break |
| | | } |
| | |
| | | } |
| | | }) |
| | | } |
| | | computedMoney() |
| | | computedMoney(result.cell) |
| | | gridOptions.menuConfig.body.options[0][5].disabled=false |
| | | break |
| | | } |
| | | case 'computedMoney' :{ |
| | | computedMoney() |
| | | computedMoney(null) |
| | | |
| | | break |
| | | } |
| | |
| | | } |
| | | }) |
| | | } |
| | | const computedMoney = () => { |
| | | const computedMoney = (cell) => { |
| | | const dataList = xGrid.value.getTableData().fullData |
| | | dataList.forEach((item,index) =>{ |
| | | item.area = area(item) |
| | | item.grossArea = countArea(item) |
| | | item.computeArea = item.area |
| | | item.computeGrossArea = item.grossArea |
| | | if(['width', 'height', 'quantity'].includes(cell)){ |
| | | item.area = area(item) |
| | | item.grossArea = countArea(item) |
| | | item.computeArea = item.area |
| | | item.computeGrossArea = item.grossArea |
| | | }else if(cell==='computeArea'){ |
| | | item.computeGrossArea = item.computeArea * item.quantity |
| | | } |
| | | |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=parseFloat((item.price * item.quantity).toFixed(2)) |
| | | }else{ |
| | |
| | | } |
| | | |
| | | const area = (row) => { |
| | | return parseFloat((row.width * row.height/1000000).toFixed(2)) |
| | | return parseFloat((row.width * row.height/1000000).toFixed(company.decValue)) |
| | | } |
| | | const countArea = (row) => { |
| | | const area = parseFloat((row.width * row.height/1000000).toFixed(2)) |
| | | const area = parseFloat((row.width * row.height/1000000).toFixed(company.decValue)) |
| | | let areaSum = 0 |
| | | // 获取保留面积 |
| | | const decValue = company.decValue |
| | | switch (titleUploadData.value.calculateType){ |
| | | |
| | | case 2:{ |
| | | areaSum = parseFloat((row.width * row.height * row.quantity/1000000).toFixed(2)) |
| | | areaSum = parseFloat((row.width * row.height * row.quantity/1000000).toFixed(decValue)) |
| | | break |
| | | } |
| | | default :{ |
| | | areaSum = parseFloat((row.computeArea * row.quantity).toFixed(2)) |
| | | areaSum = parseFloat((row.computeArea * row.quantity).toFixed(decValue)) |
| | | break |
| | | } |
| | | } |
| | |
| | | } |
| | | item.area = area(item) |
| | | item.grossArea = countArea(item) |
| | | const decValue = company.decValue |
| | | |
| | | if(item.computeGrossArea === undefined){ |
| | | if(titleUploadData.value.calculateType===1){ |
| | | item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2)) |
| | | }else if(titleUploadData.value.calculateType===2){ |
| | | item.computeGrossArea = item.grossArea |
| | | } |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=parseFloat((item.price * item.quantity).toFixed(2)) |
| | | }else{ |
| | | item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2)) |
| | | } |
| | | if(titleUploadData.value.calculateType===1){ |
| | | item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(decValue)) |
| | | }else if(titleUploadData.value.calculateType===2){ |
| | | item.computeGrossArea = item.grossArea |
| | | } |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=parseFloat((item.price * item.quantity).toFixed(2)) |
| | | }else{ |
| | | item.grossAmount=parseFloat((item.price * 1 * item.computeGrossArea).toFixed(2)) |
| | | } |
| | | |
| | | }) |
| | |
| | | { code: 'copyTitle', name: t('searchOrder.copyTitle'), prefixIcon: 'vxe-icon-copy', visible: true}, |
| | | { |
| | | prefixIcon: 'vxe-icon-print', |
| | | name: '加工单', |
| | | name: t('order.processingOrder'), |
| | | children: [ |
| | | // { code: 'sheet1', name: '横版-普通' }, |
| | | { code: 'sheet2', name: '横版-多层明细' }, |
| | | { code: 'sheet4', name: '生产加工单纵版' }, |
| | | { code: 'sheet3', name: '浏览发货信息' }, |
| | | { code: 'sheet5', name: '生产加工单弯钢(单片)' }, |
| | | { code: 'sheet2', name: t('order.sheet2') }, |
| | | { code: 'sheet4', name: t('order.sheet4') }, |
| | | { code: 'sheet3', name: t('order.sheet3') }, |
| | | { code: 'sheet5', name: t('order.sheet5')}, |
| | | |
| | | ] |
| | | }, |
| | | { code: 'oneClickStorage', name: "一键完工", prefixIcon: 'vxe-icon-copy', visible: true}, |
| | | { code: 'oneClickStorage', name: t('order.oneClickStorage'), prefixIcon: 'vxe-icon-copy', visible: true}, |
| | | // { code: 'getProcessList', name: t('searchOrder.processFlows'), prefixIcon: 'vxe-icon-file-txt', visible: true} |
| | | ] |
| | | ] |
| | |
| | | {field: 'customerBatch',width:120, title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | |
| | | //{field: '14',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true} |
| | | {field: 'deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true} |
| | | |
| | | ], |
| | | |
| | |
| | | private String deliveryId; |
| | | @ExcelProperty("发货序号") |
| | | private Integer deliveryNumber; |
| | | @ExcelProperty("产品Id") |
| | | private Integer productId; |
| | | @ExcelProperty("产品") |
| | | private String productName; |
| | | @ExcelProperty("付款条件") |
| | | private String paymentTerms; |
| | | @ExcelProperty("项目名称") |
| | |
| | | private String customerId; |
| | | @ExcelProperty("客户名称") |
| | | private String customerName; |
| | | @ExcelProperty("客户简称") |
| | | private String customerAbbreviation; |
| | | @ExcelProperty("送货日期") |
| | | private LocalDate deliveryDate; |
| | | @ExcelProperty("支付方式") |
| | |
| | | List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId); |
| | | orderDetails.forEach(orderDetail->{ |
| | | orderDetail.setGrossArea( |
| | | Double.parseDouble(String.format("%.3f",Double.parseDouble( |
| | | /*Double.parseDouble(String.format("%.3f",Double.parseDouble( |
| | | String.format("%.3f", |
| | | orderDetail.getWidth()*orderDetail.getHeight()/1000000) |
| | | ) * orderDetail.getQuantity())) |
| | | ) * orderDetail.getQuantity()))*/ |
| | | orderDetail.getComputeGrossArea() |
| | | ); |
| | | |
| | | List<OrderGlassDetail> orderGlassDetails = |
| | |
| | | <select id="getSelectDeliveryDetailReport" resultMap="selectDeliveryDetail"> |
| | | select dd.delivery_id, |
| | | dd.delivery_number, |
| | | od.product_id, |
| | | od.product_name, |
| | | d.payment_terms, |
| | | d.project, |
| | | d.customer_id, |
| | |
| | | dd.create_time |
| | | from sd.delivery_detail dd |
| | | left join sd.delivery d on dd.delivery_id=d.delivery_id |
| | | left join order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | <where> |
| | | and date(dd.create_time)>=#{startDate} and date(dd.create_time) <= #{endDate} |
| | | <if test="deliveryDetail.deliveryId != null and deliveryDetail.deliveryId != ''"> |
| | |
| | | count(dd.id) as 'total' |
| | | from sd.delivery_detail dd |
| | | left join sd.delivery d on dd.delivery_id=d.delivery_id |
| | | left join order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | <where> |
| | | and date(dd.create_time)>=#{startDate} and date(dd.create_time) <= #{endDate} |
| | | <if test="deliveryDetail.deliveryId != null and deliveryDetail.deliveryId != ''"> |
| | |
| | | select dd.id, |
| | | dd.delivery_id, |
| | | dd.delivery_number, |
| | | od.product_id, |
| | | od.product_name, |
| | | d.payment_terms, |
| | | d.project, |
| | | d.customer_id, |
| | | d.customer_name, |
| | | c.customer_abbreviation, |
| | | d.delivery_date, |
| | | d.pay_method, |
| | | d.pay_date, |
| | |
| | | dd.create_time |
| | | from sd.delivery_detail dd |
| | | left join sd.delivery d on dd.delivery_id=d.delivery_id |
| | | left join order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | left join sd.customer c on d.customer_id=c.id |
| | | where date(d.create_time)>=#{dates[0]} and date(d.create_time) <= #{dates[1]} |
| | | </select> |
| | | |
| | |
| | | d.project, |
| | | d.customer_id, |
| | | d.customer_name, |
| | | c.customer_abbreviation, |
| | | d.delivery_date, |
| | | d.pay_method, |
| | | d.pay_date, |
| | |
| | | dd.create_time |
| | | from sd.delivery_detail dd left join delivery d on dd.delivery_id=d.delivery_id |
| | | left join order_detail od on dd.order_id=od.order_id and dd.order_number=od.order_number |
| | | left join sd.customer c on d.customer_id=c.id |
| | | where date(d.create_time)>=#{dates[0]} and date(d.create_time) <= #{dates[1]} |
| | | group by dd.delivery_id,od.product_id |
| | | order by dd.delivery_id,dd.delivery_number |
| | | </select> |
| | | </mapper> |