EzyPlatform đã hoàn thành dự án vận chuyển hàng xuyên biên giới trong 6 ngày thế nào? Phần 3
Back To BlogsYêu cầu cho phần tạo bao hàng
- Có thể chọn một hoặc nhiều vận đơn để tạo bao.
- Khi chọn vận đơn thì mới hiển thị nút tạo bao hàng lên cho đỡ rối.
- Khi tạo bao hàng xong thì sẽ hiển thị lên tem in để in và gắn vào bao hàng.
- Có thể in lại tem cho bao hàng.
Các EzyPlatform đáp ứng yêu cầu
Để đáp ứng nhanh chóng các yêu cầu của khách hàng, EzyPlatform đã có sẵn những thành phần cần thiết.
Cho phép chọn một hoặc nhiều vận đơn để tạo bao hàng
Đây là tính năng yêu cầu sử dụng đến phân trang, và EzyPlatform đã có sẵn phần này. Các đơn hàng chưa được tạo bao sẽ được hiển thị thành các trang và có thể chọn được nhiều thông qua checkbox, và giao diện của phần này sẽ như sau:
Dữ liệu được phân trang sử dụng kiểu con trỏ nên đảm bảo tốc độ tối đa dù có bao nhiêu đơn hàng đi chăng nữa.
Khi chọn vận đơn thì mới hiển thị nút tạo bao hàng lên cho đỡ rối
Phần này thì đơn giản là sử dụng javascript để kiểm tra xem có vận đơn nào được chọn không nếu có thì hiển thị nút tạo bao hàng còn không thì ẩn đi, giao diện sẽ thế này:
Còn mã javascript thì thế này:
ezydelivery.deliveryOrderIdChecksChangedCallbacks.push((checkedIds, checkedCount) => {
if (checkedCount > 0) {
$('#createDeliveryPackageButton').removeClass('d-none');
} else {
$('#createDeliveryPackageButton').addClass('d-none');
}
});
Khi tạo bao hàng xong thì sẽ hiển thị lên tem in để in và gắn vào bao hàng
Vẫn sử dụng thư viện JsBarcode.all.min.js, sau khi người dùng nhấn nút tạo bao hàng các bước sau sẽ được thực hiện:
- Gọi API để tạo bao hàng.
- Khi gọi API tạo bao hàng thành công thì gọi lại API lấy danh sách vận đơn để làm mới danh sách, loại bỏ các vận đơn đã được tạo bao.
- Lấy thông tin bao hàng và hiển thị in.
Mã nguồn javascript sẽ thế này:
ezydelivery.createDeliveryPackage = function() { var formData = { deliveryOrderIds: ezydelivery.checkedDeliveryOrderIds, }; $.ajax({ type: 'POST', url: '/ezydelivery/api/v1/product-package/create', data: JSON.stringify(formData), contentType: 'application/json', success: function (data) { ezydelivery.deliveryOrderIdChecks = {} $('#deliveryOrderCheckboxParent').prop('checked', false); ezydelivery.callDeliveryOrderIdChecksChangedCallbacks(); ezydelivery.fetchDeliveryOrderList(); ezydelivery.fetchAndPrintProductPackages([data.createdId]); }, error: function (e) { ezyadmin.processUpdateApiErrors({}, e); } }); }
Còn tem in sẽ thế này:
Có thể in lại tem cho bao hàng
Thi thoảng có vấn đề gì đó với tem đã in trước đó thì người dùng có thể in lại tem bao bằng cách vào lại danh sách các bao hàng đã được tạo:
Và sau đó nhấn vào nút in để in lại tem cho bao hàng.
Tổng kết
Phần này nặng nhất là phân trang danh sách vận đơn và danh sách các bao hàng thì EzyPlatform đã có sẵn framework trong core rồi, còn phân in thì tận dùng lại của in tem cho vận đơn nên cũng chỉ mất vài tiếng là xong, trao đổi và chốt với khách hàng giao diện và UX hết khoảng một ngày.