From 5837c5bfc1ee9a7251bd0218dedd33e00d55e546 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 17 Jul 2025 15:36:59 +0800
Subject: [PATCH] feat(clothes): 添加订单打印功能
---
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSocialMuseVo.java | 6 +
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationRemarkVo.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java | 12 ++
src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java | 91 ++++++++++++++++++
src/main/resources/templates/febs/views/modules/clothesType/orderList.html | 102 +++++++++++++++----
src/main/java/cc/mrbird/febs/mall/dto/clothes/AdminClothesPrintOrderDto.java | 9 +
src/main/resources/mapper/modules/ClothesSocialCommentMapper.xml | 9 +
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiAllCommentVo.java | 3
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternRemarkVo.java | 2
src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java | 11 ++
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 4
src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java | 2
12 files changed, 223 insertions(+), 30 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
index 6a39dc4..3e47f54 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -41,5 +41,9 @@
registration.excludePathPatterns("/api/happyActivity/voteOptionInPage");
registration.excludePathPatterns("/api/happyActivity/voteActivityHot");
registration.excludePathPatterns("/api/socialCircle/**");
+ registration.excludePathPatterns("/api/clothes/social/allCategory");
+ registration.excludePathPatterns("/api/clothes/social/indexCategory");
+ registration.excludePathPatterns("/api/clothes/social/allSocial");
+ registration.excludePathPatterns("/api/clothes/social/socialInfo");
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java
index 3464909..182908d 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java
@@ -335,6 +335,17 @@
/**
* 订单列表-修改物流编号
*/
+ @GetMapping("printOrder/{id}")
+ @ControllerEndpoint(operation = "订单列表-修改物流编号", exceptionMessage = "操作失败")
+ public FebsResponse printOrder(@NotNull(message = "{required}") @PathVariable Long id) {
+ AdminClothesPrintOrderDto dto = new AdminClothesPrintOrderDto();
+ dto.setId(id);
+ return clothesTypeService.printOrder(dto);
+ }
+
+ /**
+ * 订单列表-修改物流编号
+ */
@PostMapping("deliverGoodsUpdate")
@ControllerEndpoint(operation = "订单列表-修改物流编号", exceptionMessage = "操作失败")
public FebsResponse deliverGoodsUpdate(@Valid AdminClothesDeliverGoodsDto dto) {
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/AdminClothesPrintOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/AdminClothesPrintOrderDto.java
new file mode 100644
index 0000000..80e6027
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/AdminClothesPrintOrderDto.java
@@ -0,0 +1,9 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import lombok.Data;
+
+@Data
+public class AdminClothesPrintOrderDto {
+
+ private Long id;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java b/src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java
index 1592a9b..5986279 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java
@@ -125,4 +125,6 @@
List<ClothesArt> allArt(Long typeId);
FebsResponse socialMuseUpdate(ClothesSocialMuse dto);
+
+ FebsResponse printOrder(AdminClothesPrintOrderDto dto);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java
index c9166ad..50cfea8 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java
@@ -125,7 +125,7 @@
Wrappers.lambdaQuery(ClothesSocialFollow.class)
.select(ClothesSocialFollow::getId, ClothesSocialFollow::getSourceId)
.in(ClothesSocialFollow::getSourceId, socialIds)
- .eq(ClothesSocialFollow::getType, SocialTypeEnum.LIKE.getValue())
+ .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue())
);
Map<Long, Long> likeCountBySocialIdMap = new HashMap<>();
@@ -240,10 +240,13 @@
}
apiSocialMuseVo.setTotalAmount(totalAmount.setScale(2, RoundingMode.DOWN));
+ apiSocialInfoVo.setMuse(apiSocialMuseVo);
+
List<ClothesSocialFollow> clothesSocialFollows = clothesSocialFollowMapper.selectList(
Wrappers.lambdaQuery(ClothesSocialFollow.class)
.select(ClothesSocialFollow::getType)
.eq(ClothesSocialFollow::getSourceId, socialId)
+ .eq(ClothesSocialFollow::getSourceType, SocialSourceTypeEnum.SOCIAL.getValue())
);
if (CollUtil.isNotEmpty(clothesSocialFollows)){
@@ -456,6 +459,7 @@
if(ObjectUtil.isNotNull(clothesSize)){
record.setSizeId(sizeId);
record.setSizeName(clothesSize.getName());
+ record.setSizeImage(clothesSize.getImage());
record.setSizePrice(clothesSize.getPrice());
}
}
@@ -473,6 +477,7 @@
ApiClothesPatternRemarkVo vo = new ApiClothesPatternRemarkVo();
ClothesPattern pattern = clothesPatternMapper.selectById(patternRemark.getPatternId());
vo.setPatternName(pattern.getName());
+ vo.setPatternImage(pattern.getImage());
vo.setPatternPrice(pattern.getPrice());
vo.setPatternId(pattern.getId());
vo.setPatternRemark(patternRemark.getRemark());
@@ -497,6 +502,7 @@
ClothesLocation clothesLocation = clothesLocationMapper.selectById(locationRemark.getLocationId());
vo.setLocationName(clothesLocation.getName());
vo.setLocationRemark(locationRemark.getRemark());
+ vo.setLocationImage(clothesLocation.getImage());
vo.setLocationPrice(clothesLocation.getPrice());
vo.setLocationId(clothesLocation.getId());
locationRemarkList.add(vo);
@@ -514,6 +520,7 @@
ClothesArt clothesArt = clothesArtMapper.selectById(artId);
if (ObjectUtil.isNotNull(clothesArt)){
record.setArtId(artId);
+ record.setArtImage(clothesArt.getImage());
record.setArtName(clothesArt.getName());
record.setArtPrice(clothesArt.getPrice());
}
@@ -528,6 +535,7 @@
ClothesCloth clothesCloth = clothesClothMapper.selectById(clothId);
if (ObjectUtil.isNotNull(clothesCloth)){
record.setClothId(clothId);
+ record.setClothImage(clothesCloth.getImage());
record.setClothName(clothesCloth.getName());
record.setClothPrice(clothesCloth.getPrice());
}
@@ -566,7 +574,7 @@
entity.setComment(dto.getComment());
ClothesSocialComment clothesSocialComment = clothesSocialCommentMapper.selectById(commentId);
if(ObjectUtil.isNotNull(clothesSocialComment)){
- entity.setParentId(clothesSocialComment.getParentId());
+ entity.setParentId(clothesSocialComment.getId());
entity.setCommentId(clothesSocialComment.getId());
}
clothesSocialCommentMapper.insert(entity);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java
index 5c057b5..47645d3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.SpringContextHolder;
import cc.mrbird.febs.common.utils.excl.ExcelSheetPO;
@@ -23,6 +24,7 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSON;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -41,6 +43,7 @@
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
@@ -63,11 +66,13 @@
private final ClothesTypePatternMapper clothesTypePatternMapper;
private final ClothesTypeLocationMapper clothesTypeLocationMapper;
private final ClothesOrderMapper clothesOrderMapper;
+ private final ClothesOrderItemMapper clothesOrderItemMapper;
private final MallExpressInfoMapper mallExpressInfoMapper;
private final ClothesSocialMapper clothesSocialMapper;
private final ClothesSocialFileMapper clothesSocialFileMapper;
private final ClothesSocialMuseMapper clothesSocialMuseMapper;
private final ClothesSocialCategoryMapper clothesSocialCategoryMapper;
+ private final ClothesMemberStatureMapper clothesMemberStatureMapper;
private final ClothesPatternRemarkMapper clothesPatternRemarkMapper;
private final ClothesLocationRemarkMapper clothesLocationRemarkMapper;
@@ -1148,4 +1153,90 @@
return new FebsResponse().success().message("操作成功");
}
+ @Override
+ public FebsResponse printOrder(AdminClothesPrintOrderDto dto) {
+ HashMap<String, Object> objectObjectHashMap = new HashMap<>();
+ ClothesOrder order = clothesOrderMapper.selectById(dto.getId());
+ if (ObjectUtil.isNotNull(order)){
+ objectObjectHashMap.put("orderNo", order.getOrderNo());
+ }
+ ClothesType clothesType = clothesTypeMapper.selectById(order.getTypeId());
+ if (ObjectUtil.isNotNull(clothesType)) {
+ objectObjectHashMap.put("typeName", clothesType.getName());
+ objectObjectHashMap.put("typeFront", clothesType.getImageFront());
+ objectObjectHashMap.put("typeBack", clothesType.getImageBack());
+ }
+ List<ClothesOrderItem> clothesOrderItems = clothesOrderItemMapper.selectList(
+ Wrappers.lambdaQuery(ClothesOrderItem.class)
+ .eq(ClothesOrderItem::getOrderId, order.getId())
+ );
+ if(CollUtil.isNotEmpty(clothesOrderItems)){
+ for (ClothesOrderItem item : clothesOrderItems){
+ if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) {
+ ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(cloth)) {
+ objectObjectHashMap.put("clothName", cloth.getName());
+ objectObjectHashMap.put("clothCode", cloth.getCode());
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.SIZE.getCode() == item.getType()) {
+ ClothesSize size = clothesSizeMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(size)) {
+ objectObjectHashMap.put("sizeName", size.getName());
+ objectObjectHashMap.put("sizeCode", size.getCode());
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) {
+ ClothesLocation location = clothesLocationMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(location)) {
+ objectObjectHashMap.put("locationName", location.getName());
+ objectObjectHashMap.put("locationCode", location.getCode());
+
+ JSON parse = JSONUtil.parse(item.getRemark());
+ objectObjectHashMap.put("locationText", parse.getByPath("text", String.class));
+ objectObjectHashMap.put("locationImage", parse.getByPath("file", String.class));
+ }else{
+ objectObjectHashMap.put("locationName", "");
+ objectObjectHashMap.put("locationCode", "");
+ objectObjectHashMap.put("locationText", "");
+ objectObjectHashMap.put("locationImage", "");
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.PATTERN.getCode() == item.getType()) {
+ ClothesPattern pattern = clothesPatternMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(pattern)) {
+ objectObjectHashMap.put("patternName", pattern.getName());
+ objectObjectHashMap.put("patternCode", pattern.getCode());
+
+ JSON parse = JSONUtil.parse(item.getRemark());
+ objectObjectHashMap.put("patternText", parse.getByPath("text", String.class));
+ objectObjectHashMap.put("patternImage", parse.getByPath("file", String.class));
+ }else{
+ objectObjectHashMap.put("patternName", "");
+ objectObjectHashMap.put("patternCode", "");
+ objectObjectHashMap.put("patternText", "");
+ objectObjectHashMap.put("patternImage", "");
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.ART.getCode() == item.getType()) {
+ ClothesArt art = clothesArtMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(art)) {
+ objectObjectHashMap.put("artName", art.getName());
+ objectObjectHashMap.put("artCode", art.getCode());
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.CUSTOMIZE.getCode() == item.getType()) {
+ ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(clothesMemberStature)) {
+ objectObjectHashMap.put("statureName", clothesMemberStature.getName());
+ }
+ continue;
+ } else {
+ continue;
+ }
+ }
+ }
+ return new FebsResponse().success().data(objectObjectHashMap);
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiAllCommentVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiAllCommentVo.java
index 89b9451..52e9c0a 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiAllCommentVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiAllCommentVo.java
@@ -31,4 +31,7 @@
@ApiModelProperty(value = "评论数量")
private Integer commentCnt = 0;
+
+ @ApiModelProperty(value = "点赞数量")
+ private Integer likeCnt = 0;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationRemarkVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationRemarkVo.java
index df2ba42..004acde 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationRemarkVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesLocationRemarkVo.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/ApiClothesPatternRemarkVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternRemarkVo.java
index aed07b4..0b5ad52 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternRemarkVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesPatternRemarkVo.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/ApiClothesSocialMuseVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSocialMuseVo.java
index 2d7539b..e03704f 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSocialMuseVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesSocialMuseVo.java
@@ -28,6 +28,8 @@
private Long artId;
@ApiModelProperty(value = "工艺名称")
private String artName;
+ @ApiModelProperty(value = "工艺图片")
+ private String artImage;
@ApiModelProperty(value = "工艺价格")
private BigDecimal artPrice = BigDecimal.ZERO;
@@ -35,6 +37,8 @@
private Long sizeId;
@ApiModelProperty(value = "尺码名称")
private String sizeName;
+ @ApiModelProperty(value = "尺码图片")
+ private String sizeImage;
@ApiModelProperty(value = "尺码价格")
private BigDecimal sizePrice = BigDecimal.ZERO;
@@ -42,6 +46,8 @@
private Long clothId;
@ApiModelProperty(value = "布料名称")
private String clothName;
+ @ApiModelProperty(value = "布料图片")
+ private String clothImage;
@ApiModelProperty(value = "布料价格")
private BigDecimal clothPrice = BigDecimal.ZERO;
diff --git a/src/main/resources/mapper/modules/ClothesSocialCommentMapper.xml b/src/main/resources/mapper/modules/ClothesSocialCommentMapper.xml
index c7a6db4..904d7a7 100644
--- a/src/main/resources/mapper/modules/ClothesSocialCommentMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesSocialCommentMapper.xml
@@ -8,23 +8,24 @@
b.avatar as memberAvatar,
a.id as commentId,
a.comment as comment,
+ (select count(id) from clothes_social_follow where source_id = c.id and source_option_id = a.id and source_type = 2) as likeCnt,
a.created_time as createdTime
from clothes_social_comment a
left join mall_member b on a.member_id = b.id
- left join clothes_social c on a.social_id = b.id
+ left join clothes_social c on a.social_id = c.id
<where>
and a.show_state = 1
and a.social_id = #{record.socialId}
<if test="record != null">
- <if test="record.parentId != null">
+ <if test="record.parentId != 0">
and a.parent_id = #{record.parentId}
</if>
- <if test="record.parentId == null">
+ <if test="record.parentId == 0">
and a.parent_id is null
</if>
</if>
</where>
- order bya.created_time asc
+ order by a.created_time desc
</select>
<select id="selectSocialCommentListInPage" resultType="cc.mrbird.febs.mall.vo.clothes.AdminClothesSocialCommentVo">
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 a498a93..9bbd856 100644
--- a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
@@ -171,7 +171,7 @@
febs.alert.warn('请选择订单');
return;
}
- printSelect(data)
+ printSelectData(ids)
}
if (layEvent === 'deliverGoods') {
@@ -300,7 +300,7 @@
febs.alert.warn('请选择待发货的订单');
return;
}
- window.location.href = ctx + "admin/order/exportOrderList?ids="+ids;
+ window.location.href = ctx + "admin/clothesType/exportOrderList?ids="+ids;
}
});
@@ -310,46 +310,100 @@
* [自定义打印选中行数据]
* @param {[type]} allData [传入选中行]
*/
- function printSelect(allData) {
+ function printSelectData(allData) {
+ let orderId = allData;
+ console.log(orderId);
+ $.ajax({
+ url: '/admin/clothesType/printOrder/'+orderId,
+ type: "get",
+ contentType: 'application/json',
+ success(res) {
+ console.log(res);
+ printSelect(res.data);
+ },
+ error(xhr, status, error) {
+ console.error("AJAX 请求失败:", error);
+ alert("请求失败,请重试");
+ }
+ });
+ }
+
+ function printSelect(data) {
//用于包含内容
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>"
+ console.log(data);
+ var template =
+ "<div class='main'>" +
+ "<div style='text-align: center;font-size: 30px;font-weight: bold;margin-bottom: 10px'>订单编号:" + data.orderNo + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>类型:" + data.typeName + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>布料:" + data.clothName + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.clothCode + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>尺码:" + data.sizeName + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.sizeCode + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>工艺:" + data.artName + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.artCode + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>正面图案:" + data.patternName + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.patternCode + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>文案:" + data.patternText + "</div>" +
+ "<div class='print-images' style='font-size: 30px;font-weight: bold;'>图片:" +
+ "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.patternImage+">" +
+ "</div>" +
- contentHtml += template;
- }
+ "<div style='font-size: 30px;font-weight: bold;'>反面图案:" + data.locationName + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>编码:" + data.locationCode + "</div>" +
+ "<div style='font-size: 30px;font-weight: bold;'>文案:" + data.locationText + "</div>" +
+ "<div class='print-images' style='font-size: 30px;font-weight: bold;'>图片:" +
+ "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.locationImage+">" +
+ "</div>" +
+ "<div class='print-images' style='font-size: 30px;font-weight: bold;'>正面:" +
+ "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.typeFront+">" +
+ "</div>" +
+ "<div class='print-images' style='font-size: 30px;font-weight: bold;'>反面:" +
+ "<img style='width: 200px; height: 200px; max-width: 80%; margin-top: 5px;' src="+ data.typeBack+">" +
+ "</div>" +
+ "</div>"
- //contentHtml为已拼凑好的内容
- $(v).append(contentHtml)
+ v.innerHTML = template;
//新建窗口
var h = window.open("打印窗口", "_blank");
//写入拼凑内容
h.document.write(f + $(v).prop("outerHTML"));
+ h.document.close();
+ //在新窗口的 document 中查找图片
+ ensureImagesLoaded(h.document, '.print-images img')
+ .then(() => h.print())
+ .catch(() => layer.msg('部分图片加载失败'));
//调用打印
h.print();
//关闭页面
h.close();
}
+ function ensureImagesLoaded(doc, selector) {
+ var imgs = $(selector, doc); // 👈 在指定文档中查找
+ var promises = [];
+
+ imgs.each(function() {
+ var img = this;
+ var promise = new Promise(function(resolve, reject) {
+ if (img.complete && img.naturalWidth !== 0) {
+ resolve();
+ } else {
+ $(img).on('load', resolve).on('error', reject);
+ }
+ });
+ promises.push(promise);
+ });
+
+ return Promise.all(promises);
+ }
+
+
+
function refundOrder(id) {
febs.get(ctx + 'admin/clothesType/refundOrder/' + id, null, function () {
febs.alert.success('操作成功');
--
Gitblit v1.9.1