一、功能概述
订单批量打印是生鲜配送系统中提高订单处理效率的关键功能,能够一次性处理多个订单的打印需求,减少人工操作时间,特别适合生鲜行业订单量大、时效性要求高的特点。
二、技术实现方案
1. 前端实现
```javascript
// 示例:Vue.js 前端实现
type="primary"
@click="batchPrint"
:disabled="selectedOrders.length === 0">
批量打印({{selectedOrders.length}})
<script>
export default {
data() {
return {
orderList: [], // 订单列表
selectedOrders: [] // 选中的订单
}
},
methods: {
handleSelectionChange(val) {
this.selectedOrders = val;
},
async batchPrint() {
try {
const response = await this.$http.post(/api/order/batch-print, {
orderIds: this.selectedOrders.map(item => item.id)
});
// 调用打印服务
this.printOrders(response.data.printData);
} catch (error) {
this.$message.error(批量打印失败);
}
},
printOrders(printData) {
// 使用Lodop或浏览器打印API实现打印
// 这里可以使用iframe或直接调用window.print()
const printWindow = window.open(, _blank);
printWindow.document.write(`
订单打印 <style>
/* 打印样式 */
@media print {
.no-print { display: none; }
}
.print-container {
width: 210mm; /* A4纸宽度 */
margin: 0 auto;
padding: 10mm;
}
.order-item {
page-break-inside: avoid;
margin-bottom: 10mm;
}
${printData.map(order => this.generateOrderHtml(order)).join()}
<script>
window.onload = function() {
window.print();
setTimeout(() => window.close(), 1000);
};
<\/script>
`);
printWindow.document.close();
},
generateOrderHtml(order) {
// 生成单个订单的HTML
return `
美菜生鲜订单 ${order.id}
客户: ${order.customerName}
地址: ${order.address}
电话: ${order.phone}
下单时间: ${order.createTime}
商品 |
规格 |
数量 |
单价 |
|---|
${order.items.map(item => `
${item.productName} |
${item.spec} |
${item.quantity} |
${item.price} |
`).join()}
总计: ¥${order.totalAmount}
`;
}
}
}
```
2. 后端实现(Spring Boot示例)
```java
@RestController
@RequestMapping("/api/order")
public class OrderPrintController {
@Autowired
private OrderService orderService;
@PostMapping("/batch-print")
public ResponseEntity
batchPrint(@RequestBody BatchPrintRequest request) {
// 验证请求
if (request.getOrderIds() == null || request.getOrderIds().isEmpty()) {
return ResponseEntity.badRequest().build();
}
// 查询订单数据
List orders = orderService.findByIds(request.getOrderIds());
// 生成打印数据
List