From 46d9a52288d5c36985435e775a8433df4e12000b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 16 Jul 2025 14:27:59 +0800
Subject: [PATCH] feat(mall): 添加自定义打印功能并优化订单相关接口
---
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternInfoVo.java | 2 +
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationInfoVo.java | 2 +
src/main/resources/templates/febs/views/modules/clothesType/orderList.html | 68 ++++++++++++++++++++++++++++++++++
src/main/resources/mapper/modules/ClothesOrderDraftMapper.xml | 2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java | 11 ++++-
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiMyDraftVo.java | 6 +++
6 files changed, 88 insertions(+), 3 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
index a6c9631..9f029d3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
@@ -210,6 +210,8 @@
ClothesOrderDraft clothesOrderDraft = clothesOrderDraftMapper.selectById(id);
if (ObjectUtil.isNotNull(clothesOrderDraft)){
+ Long draftId = clothesOrderDraft.getId();
+
Long typeId = clothesOrderDraft.getTypeId();
ClothesType clothesType = clothesTypeMapper.selectById(typeId);
record.setTypeId(typeId);
@@ -226,6 +228,7 @@
record.setSizeId(sizeId);
record.setSizeName(clothesSize.getName());
record.setSizePrice(clothesSize.getPrice());
+ record.setSizeImage(clothesSize.getImage());
}
}
}
@@ -240,7 +243,7 @@
BigDecimal totalPatternPrice = BigDecimal.ZERO;
List<ClothesPatternRemark> clothesPatternRemarks = clothesPatternRemarkMapper.selectList(
Wrappers.lambdaQuery(ClothesPatternRemark.class)
- .eq(ClothesPatternRemark::getSourceId, record.getId())
+ .eq(ClothesPatternRemark::getSourceId, draftId)
.eq(ClothesPatternRemark::getType, SocialPatternLocationTypeEnum.DRAFT.getValue())
);
if(CollUtil.isNotEmpty(clothesPatternRemarks)){
@@ -253,6 +256,7 @@
vo.setPatternName(clothesPattern.getName());
vo.setPatternPrice(clothesPattern.getPrice());
vo.setPatternRemark(entity.getRemark());
+ vo.setPatternImage(clothesPattern.getImage());
vos.add(vo);
totalPatternPrice = totalPatternPrice.add(clothesPattern.getPrice());
@@ -263,7 +267,7 @@
BigDecimal totalLocationPrice = BigDecimal.ZERO;
List<ClothesLocationRemark> clothesLocationRemarks = clothesLocationRemarkMapper.selectList(
Wrappers.lambdaQuery(ClothesLocationRemark.class)
- .eq(ClothesLocationRemark::getSourceId, record.getId())
+ .eq(ClothesLocationRemark::getSourceId, draftId)
.eq(ClothesLocationRemark::getType, SocialPatternLocationTypeEnum.DRAFT.getValue())
);
if(CollUtil.isNotEmpty(clothesLocationRemarks)){
@@ -276,6 +280,7 @@
vo.setLocationName(location.getName());
vo.setLocationPrice(location.getPrice());
vo.setLocationRemark(entity.getRemark());
+ vo.setLocationImage(location.getImage());
vos.add(vo);
totalLocationPrice = totalLocationPrice.add(location.getPrice());
@@ -293,6 +298,7 @@
record.setArtId(artId);
record.setArtName(clothesArt.getName());
record.setArtPrice(clothesArt.getPrice());
+ record.setArtImage(clothesArt.getImage());
}
}
}
@@ -307,6 +313,7 @@
record.setClothId(clothId);
record.setClothName(clothesCloth.getName());
record.setClothPrice(clothesCloth.getPrice());
+ record.setClothImage(clothesCloth.getImage());
}
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationInfoVo.java
index cce33bd..bb0b12f 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationInfoVo.java
@@ -15,6 +15,8 @@
private Long locationId;
@ApiModelProperty(value = "反面图案名称")
private String locationName;
+ @ApiModelProperty(value = "反面图案图片")
+ private String locationImage;
@ApiModelProperty(value = "反面图案价格")
private BigDecimal locationPrice = BigDecimal.ZERO;
@ApiModelProperty(value = "反面自定义内容")
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternInfoVo.java
index a1fe32b..4373f80 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternInfoVo.java
@@ -15,6 +15,8 @@
private Long patternId;
@ApiModelProperty(value = "正面图案名称")
private String patternName;
+ @ApiModelProperty(value = "正面图案图片")
+ private String patternImage;
@ApiModelProperty(value = "正面图案价格")
private BigDecimal patternPrice = BigDecimal.ZERO;
@ApiModelProperty(value = "正面自定义内容")
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiMyDraftVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiMyDraftVo.java
index f789d3b..a9115d4 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiMyDraftVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiMyDraftVo.java
@@ -30,6 +30,8 @@
private String artName;
@ApiModelProperty(value = "工艺价格")
private BigDecimal artPrice = BigDecimal.ZERO;
+ @ApiModelProperty(value = "工艺图片")
+ private String artImage;
@ApiModelProperty(value = "尺码ID")
private Long sizeId;
@@ -37,6 +39,8 @@
private String sizeName;
@ApiModelProperty(value = "尺码价格")
private BigDecimal sizePrice = BigDecimal.ZERO;
+ @ApiModelProperty(value = "尺码图片")
+ private String sizeImage;
@ApiModelProperty(value = "正面图案")
private List<ApiClothesPatternInfoVo> patternList;
@@ -52,6 +56,8 @@
private String clothName;
@ApiModelProperty(value = "布料价格")
private BigDecimal clothPrice = BigDecimal.ZERO;
+ @ApiModelProperty(value = "布料图片")
+ private String clothImage;
@ApiModelProperty(value = "身材数据ID")
private Long statureId;
diff --git a/src/main/resources/mapper/modules/ClothesOrderDraftMapper.xml b/src/main/resources/mapper/modules/ClothesOrderDraftMapper.xml
index e17e850..d19e901 100644
--- a/src/main/resources/mapper/modules/ClothesOrderDraftMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesOrderDraftMapper.xml
@@ -10,7 +10,7 @@
where a.member_id = #{record.memberId}
and a.del_flag = 0
and b.state = 1
- order by a.CREATED_TIME asc
+ order by a.CREATED_TIME desc
</select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
index d5a50f8..a498a93 100644
--- a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
@@ -100,6 +100,7 @@
</script>
<script type="text/html" id="tableToolBarClothesOrder">
<div class="layui-btn-container">
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="printSelect">自定义打印</button>
<button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="deliverGoods">发货</button>
<button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="updateDeliver">修改物流信息</button>
<button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="refundOrder">仅退款</button>
@@ -150,6 +151,28 @@
var layEvent = obj.event;
var id = obj.config.id;
var checkStatus = table.checkStatus(id);
+ if(layEvent === 'printSelect'){
+ let data = checkStatus.data;
+ if (data.length > 1) {
+ febs.alert.warn('每次只能操作一个订单');
+ return;
+ }
+ let ids = "";
+ for(let i = 0;i < data.length;i++){
+ console.log(data[i].status);
+ if(data[i].status != 2){
+ febs.alert.warn('请选择待发货的订单');
+ return;
+ }else{
+ ids = data[i].id;
+ }
+ }
+ if(ids == null || ids == ""){
+ febs.alert.warn('请选择订单');
+ return;
+ }
+ printSelect(data)
+ }
if (layEvent === 'deliverGoods') {
let data = checkStatus.data;
@@ -282,6 +305,51 @@
});
+
+ /*
+ * [自定义打印选中行数据]
+ * @param {[type]} allData [传入选中行]
+ */
+ function printSelect(allData) {
+ //用于包含内容
+ var v = document.createElement("div");
+ //页面头部,导入css ,media="print"表示打印时使用该样式
+ var f = ["<head>", "<style>", "div{font-size:8px;}", ".main{width:100%;}",
+ ".main div{width:100%;display:inline-block;}", "</style>", "</head>"
+ ].join("");
+ var contentHtml = "";
+ for (let i = 0; i < allData.length; i++) {
+ let data = allData[i]
+ var template =
+ "<div class='main'>" +
+ "<table cellspacing=\"0\" width=\"100%\" style=\"border-collapse: separate; border-spacing: 0px;\">" +
+ "<tr>" +
+ "<td style='width: 50%;'>" +
+ "<img src='" + data.img + "' style='width: 100%;'/>" +
+ "</td>" +
+ "<td style='width: 50%;'>" +
+ "<img src='" + data.img + "' style='width: 100%;'/>" +
+ "</td>" +
+ "</tr>" +
+ "</table>" +
+ "<div style='text-align: center;font-size: 10px;font-weight: bold;margin-bottom: 10px'>订单编号:" + data.orderNo + "</div>" +
+ "</div>"
+
+ contentHtml += template;
+ }
+
+ //contentHtml为已拼凑好的内容
+ $(v).append(contentHtml)
+ //新建窗口
+ var h = window.open("打印窗口", "_blank");
+ //写入拼凑内容
+ h.document.write(f + $(v).prop("outerHTML"));
+ //调用打印
+ h.print();
+ //关闭页面
+ h.close();
+ }
+
function refundOrder(id) {
febs.get(ctx + 'admin/clothesType/refundOrder/' + id, null, function () {
febs.alert.success('操作成功');
--
Gitblit v1.9.1