From 4888ef96061e19769427bf52b0a644da7910331e Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 18 Jul 2025 16:31:56 +0800
Subject: [PATCH] feat(clothes): 添加服装打印相关功能
---
src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java | 4
src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintOrderVo.java | 24 +
src/main/resources/templates/febs/views/modules/clothesType/orderList-bak.html | 522 +++++++++++++++++++++++++++
src/main/resources/templates/index.html | 2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesSocialServiceImpl.java | 7
src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java | 121 ++++++
src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintPatternVo.java | 11
src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintMemberStatureVo.java | 15
src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java | 67 +++
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 3
src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java | 26 +
src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintLocationVo.java | 11
src/main/resources/templates/febs/views/modules/clothesType/orderPrint.html | 249 +++++++++++++
src/main/resources/templates/febs/views/modules/clothesType/orderList.html | 15
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java | 2
src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java | 2
src/main/resources/templates/febs/views/layout.html | 2
src/main/resources/templates/febs/views/login.html | 4
18 files changed, 1,067 insertions(+), 20 deletions(-)
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 182908d..7aa560b 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
@@ -20,11 +20,17 @@
import cc.mrbird.febs.mall.dto.clothes.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.service.ClothesTypeService;
+import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintLocationVo;
+import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintMemberStatureVo;
+import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintOrderVo;
+import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintPatternVo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
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.JSONUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -38,6 +44,7 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
+import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
@@ -343,6 +350,66 @@
return clothesTypeService.printOrder(dto);
}
+ public static void main(String[] args) {
+ AdminClothesPrintOrderVo vo = new AdminClothesPrintOrderVo();
+ vo.setOrderNo("20201201");
+ vo.setTypeName("T恤");
+ vo.setTypeFront("https://excoin.oss-cn-hangzhou.aliyuncs.com/clothes/1752740706568ab67808fb49940a7930b9e0ab0793238.png");
+ vo.setTypeBack("https://excoin.oss-cn-hangzhou.aliyuncs.com/clothes/1752740734639227e7f5a0f3a4de097a2785305bff825.png");
+ vo.setClothName("棉");
+ vo.setClothCode("TX");
+ vo.setSizeName("XL");
+ vo.setSizeCode("XL");
+ vo.setArtName("印花");
+ vo.setArtCode("C");
+ List<AdminClothesPrintPatternVo> patterns = new ArrayList<>();
+ AdminClothesPrintPatternVo pattern = new AdminClothesPrintPatternVo();
+ pattern.setPatternName("胸口");
+ pattern.setPatternCode("front-one");
+ pattern.setPatternText("胸口");
+ pattern.setPatternImage("https://excoin.oss-cn-hangzhou.aliyuncs.com/clothes/17527407868773d1ad92c4c2e454396a6fc051c2219bc.png");
+ patterns.add(pattern);
+
+ AdminClothesPrintPatternVo pattern1 = new AdminClothesPrintPatternVo();
+ pattern1.setPatternName("左下");
+ pattern1.setPatternCode("front-two");
+ pattern1.setPatternText("左下");
+ pattern1.setPatternImage("https://excoin.oss-cn-hangzhou.aliyuncs.com/clothes/17527407868773d1ad92c4c2e454396a6fc051c2219bc.png");
+ patterns.add(pattern1);
+ AdminClothesPrintPatternVo pattern2 = new AdminClothesPrintPatternVo();
+ pattern2.setPatternName("袖口");
+ pattern2.setPatternCode("front-three");
+ pattern2.setPatternText("袖口");
+ pattern2.setPatternImage("https://excoin.oss-cn-hangzhou.aliyuncs.com/clothes/17527407868773d1ad92c4c2e454396a6fc051c2219bc.png");
+ patterns.add(pattern2);
+ vo.setPatterns( patterns);
+
+ List<AdminClothesPrintLocationVo> locations = new ArrayList<>();
+ AdminClothesPrintLocationVo location = new AdminClothesPrintLocationVo();
+ location.setLocationName("后背");
+ location.setLocationCode("back-one");
+ location.setLocationText("后背");
+ location.setLocationImage("https://excoin.oss-cn-hangzhou.aliyuncs.com/clothes/17527407868773d1ad92c4c2e454396a6fc051c2219bc.png");
+ locations.add(location);
+ vo.setLocations(locations);
+
+ AdminClothesPrintMemberStatureVo adminClothesPrintMemberStatureVo = new AdminClothesPrintMemberStatureVo();
+ adminClothesPrintMemberStatureVo.setName("会员身高");
+ adminClothesPrintMemberStatureVo.setHeightLine(new BigDecimal("170"));
+ adminClothesPrintMemberStatureVo.setBustLine(new BigDecimal("90"));
+ adminClothesPrintMemberStatureVo.setWaistLine(new BigDecimal("80"));
+ adminClothesPrintMemberStatureVo.setWideLine(new BigDecimal("100"));
+ adminClothesPrintMemberStatureVo.setHipLine(new BigDecimal("100"));
+ vo.setMemberStature(adminClothesPrintMemberStatureVo);
+
+
+ //将vo转换成json字符串
+ JSON parse = JSONUtil.parse(vo);
+ System.out.println(parse.toString());
+
+
+ }
+
/**
* 订单列表-修改物流编号
*/
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java
index 48bf0a4..01ac0bb 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesController.java
@@ -56,7 +56,7 @@
return clothesService.clothList(dto);
}
- @ApiOperation(value = "图案列表", notes = "图案列表")
+ @ApiOperation(value = "正面图案列表", notes = "图案列表")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiClothesPatternVo.class)
})
@@ -76,7 +76,7 @@
return clothesService.sizeList(dto);
}
- @ApiOperation(value = "位置列表", notes = "位置列表")
+ @ApiOperation(value = "反面图案列表", notes = "反面图案列表")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiClothesLocationVo.class)
})
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java
index 4904d8e..47699fd 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java
@@ -2,20 +2,19 @@
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsConstant;
+import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.SocialPatternLocationTypeEnum;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.dto.clothes.AdminClothesPrintOrderDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.ClothesTypeService;
import cc.mrbird.febs.mall.service.IAdminBannerService;
import cc.mrbird.febs.mall.vo.AdminLabelSetVo;
import cc.mrbird.febs.mall.vo.AdminMallOrderVo;
-import cc.mrbird.febs.mall.vo.clothes.AdminClothesDeliverGoodsVo;
-import cc.mrbird.febs.mall.vo.clothes.AdminClothesLocationRemarkVo;
-import cc.mrbird.febs.mall.vo.clothes.AdminClothesPatternRemarkVo;
-import cc.mrbird.febs.mall.vo.clothes.AdminClothesTypeInfoVo;
+import cc.mrbird.febs.mall.vo.clothes.*;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -236,6 +235,25 @@
return FebsUtil.view("modules/clothesType/orderList");
}
+
+
+
+
+ /**
+ * 社区列表-查看评论
+ * @return
+ */
+ @GetMapping("/orderPrint/{id}")
+ @RequiresPermissions("orderPrint:view")
+ public String orderPrint(@PathVariable Long id, Model model) {
+
+ AdminClothesPrintOrderDto dto = new AdminClothesPrintOrderDto();
+ dto.setId(id);
+ AdminClothesPrintOrderVo adminClothesPrintOrderVo = clothesTypeService.printOrderEvent(dto);
+ model.addAttribute("orderPrint", adminClothesPrintOrderVo);
+ return FebsUtil.view("modules/clothesType/orderPrint");
+ }
+
/**
* 订单-发货
* @param 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 5986279..860a69c 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/ClothesTypeService.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.mall.dto.clothes.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.vo.clothes.AdminClothesOrderListVo;
+import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintOrderVo;
import cc.mrbird.febs.mall.vo.clothes.AdminClothesSocialCommentVo;
import cc.mrbird.febs.mall.vo.clothes.AdminClothesSocialListVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -127,4 +128,5 @@
FebsResponse socialMuseUpdate(ClothesSocialMuse dto);
FebsResponse printOrder(AdminClothesPrintOrderDto dto);
+ AdminClothesPrintOrderVo printOrderEvent(AdminClothesPrintOrderDto dto);
}
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 9f029d3..8b0d3e1 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
@@ -862,7 +862,7 @@
if(ObjectUtil.isNull(orderInfo)){
throw new FebsException("订单不存在");
}
- if (member.getId() != orderInfo.getMemberId()) {
+ if (!ObjectUtil.equal(member.getId(), orderInfo.getMemberId())) {
throw new FebsException("无权限操作");
}
if (ClothesEnum.UP.getCode() == orderInfo.getDelFlag()) {
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 50cfea8..de57410 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
@@ -76,6 +76,11 @@
if(CollUtil.isNotEmpty(list)){
vos = buildApiClothesCategoryInfoVo(list, vos);
}
+ ApiClothesCategoryInfoVo apiClothesCategoryInfoVo = new ApiClothesCategoryInfoVo();
+ apiClothesCategoryInfoVo.setId(0L);
+ apiClothesCategoryInfoVo.setName("全部");
+ vos.add(apiClothesCategoryInfoVo);
+
return new FebsResponse().success().data(vos);
}
@@ -325,7 +330,7 @@
List<ClothesLocationRemark> clothesLocationRemarks = new ArrayList<>();
List<ClothesPatternRemark> clothesPatternRemarks = new ArrayList<>();
- if(CollUtil.isEmpty(clothesOrderItems)){
+ if(CollUtil.isNotEmpty(clothesOrderItems)){
for (ClothesOrderItem item : clothesOrderItems){
if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) {
ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId());
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 47645d3..25b929a 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
@@ -1239,4 +1239,125 @@
return new FebsResponse().success().data(objectObjectHashMap);
}
+ @Override
+ public AdminClothesPrintOrderVo printOrderEvent(AdminClothesPrintOrderDto dto) {
+
+ AdminClothesPrintOrderVo vo = new AdminClothesPrintOrderVo();
+
+ ClothesOrder order = clothesOrderMapper.selectById(dto.getId());
+ if (ObjectUtil.isNotNull(order)){
+ vo.setOrderNo(order.getOrderNo());
+ }
+ ClothesType clothesType = clothesTypeMapper.selectById(order.getTypeId());
+ if (ObjectUtil.isNotNull(clothesType)) {
+ vo.setTypeName(clothesType.getName());
+ vo.setTypeFront(clothesType.getImageFront());
+ vo.setTypeBack(clothesType.getImageBack());
+ }
+ List<ClothesOrderItem> clothesOrderItems = clothesOrderItemMapper.selectList(
+ Wrappers.lambdaQuery(ClothesOrderItem.class)
+ .eq(ClothesOrderItem::getOrderId, order.getId())
+ );
+ if(CollUtil.isNotEmpty(clothesOrderItems)){
+ String nullStr = "暂无";
+ List<AdminClothesPrintLocationVo> locations = new ArrayList<>();
+ List<AdminClothesPrintPatternVo> patterns = new ArrayList<>();
+ for (ClothesOrderItem item : clothesOrderItems){
+ if (ClothesOrderItemEnum.CLOTH.getCode() == item.getType()) {
+ ClothesCloth cloth = clothesClothMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(cloth)) {
+ vo.setClothCode(cloth.getCode());
+ vo.setClothName(cloth.getName());
+ }else{
+ vo.setClothCode(nullStr);
+ vo.setClothName(nullStr);
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.SIZE.getCode() == item.getType()) {
+ ClothesSize size = clothesSizeMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(size)) {
+ vo.setSizeName(size.getName());
+ vo.setSizeCode(size.getCode());
+ }else {
+ vo.setSizeName(nullStr);
+ vo.setSizeCode(nullStr);
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.LOCATION.getCode() == item.getType()) {
+ AdminClothesPrintLocationVo locationVo = new AdminClothesPrintLocationVo();
+ ClothesLocation location = clothesLocationMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(location)) {
+ locationVo.setLocationName(location.getName());
+ locationVo.setLocationCode(location.getCode());
+
+ JSON parse = JSONUtil.parse(item.getRemark());
+ locationVo.setLocationText(parse.getByPath("text", String.class));
+ locationVo.setLocationImage(parse.getByPath("file", String.class));
+ }else{
+ locationVo.setLocationName(nullStr);
+ locationVo.setLocationCode(nullStr);
+ locationVo.setLocationText(nullStr);
+ locationVo.setLocationImage(nullStr);
+ }
+ locations.add(locationVo);
+ vo.setLocations( locations);
+ continue;
+ } else if (ClothesOrderItemEnum.PATTERN.getCode() == item.getType()) {
+ AdminClothesPrintPatternVo patternVo = new AdminClothesPrintPatternVo();
+
+ ClothesPattern pattern = clothesPatternMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(pattern)) {
+ patternVo.setPatternName(pattern.getName());
+ patternVo.setPatternCode(pattern.getCode());
+
+ JSON parse = JSONUtil.parse(item.getRemark());
+ patternVo.setPatternText(parse.getByPath("text", String.class));
+ patternVo.setPatternImage(parse.getByPath("file", String.class));
+ }else{
+ patternVo.setPatternName(nullStr);
+ patternVo.setPatternCode(nullStr);
+ patternVo.setPatternText(nullStr);
+ patternVo.setPatternImage(nullStr);
+ }
+ patterns.add(patternVo);
+ vo.setPatterns( patterns);
+ continue;
+ } else if (ClothesOrderItemEnum.ART.getCode() == item.getType()) {
+ ClothesArt art = clothesArtMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(art)) {
+ vo.setArtName(art.getName());
+ vo.setArtCode(art.getCode());
+ }else{
+ vo.setArtName(nullStr);
+ vo.setArtCode(nullStr);
+ }
+ continue;
+ } else if (ClothesOrderItemEnum.CUSTOMIZE.getCode() == item.getType()) {
+ AdminClothesPrintMemberStatureVo memberStature = new AdminClothesPrintMemberStatureVo();
+ ClothesMemberStature clothesMemberStature = clothesMemberStatureMapper.selectById(item.getItemId());
+ if (ObjectUtil.isNotNull(clothesMemberStature)) {
+ memberStature.setName(clothesMemberStature.getName());
+ memberStature.setHeightLine(clothesMemberStature.getHeightLine());
+ memberStature.setBustLine(clothesMemberStature.getBustLine());
+ memberStature.setWaistLine(clothesMemberStature.getWaistLine());
+ memberStature.setWideLine(clothesMemberStature.getWideLine());
+ memberStature.setHipLine(clothesMemberStature.getHipLine());
+ }else{
+ memberStature.setName(nullStr);
+ memberStature.setHeightLine(BigDecimal.ZERO);
+ memberStature.setBustLine(BigDecimal.ZERO);
+ memberStature.setWaistLine(BigDecimal.ZERO);
+ memberStature.setWideLine(BigDecimal.ZERO);
+ memberStature.setHipLine(BigDecimal.ZERO);
+ }
+ vo.setMemberStature(memberStature);
+ continue;
+ } else {
+ continue;
+ }
+ }
+ }
+ return vo;
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintLocationVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintLocationVo.java
new file mode 100644
index 0000000..1f46911
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintLocationVo.java
@@ -0,0 +1,11 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import lombok.Data;
+
+@Data
+public class AdminClothesPrintLocationVo {
+ private String locationName;
+ private String locationCode;
+ private String locationText;
+ private String locationImage;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintMemberStatureVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintMemberStatureVo.java
new file mode 100644
index 0000000..112ac06
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintMemberStatureVo.java
@@ -0,0 +1,15 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+@Data
+public class AdminClothesPrintMemberStatureVo {
+
+ private String name;
+ private BigDecimal heightLine;
+ private BigDecimal bustLine;
+ private BigDecimal waistLine;
+ private BigDecimal wideLine;
+ private BigDecimal hipLine;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintOrderVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintOrderVo.java
new file mode 100644
index 0000000..b411f9b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintOrderVo.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AdminClothesPrintOrderVo {
+ private String orderNo;
+ private String typeName;
+ private String typeFront;
+ private String typeBack;
+ private String clothName;
+ private String clothCode;
+ private String sizeName;
+ private String sizeCode;
+ private String artName;
+ private String artCode;
+ private List<AdminClothesPrintPatternVo> patterns;
+ private List<AdminClothesPrintLocationVo> locations;
+
+ private AdminClothesPrintMemberStatureVo memberStature;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintPatternVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintPatternVo.java
new file mode 100644
index 0000000..2affb96
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/AdminClothesPrintPatternVo.java
@@ -0,0 +1,11 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import lombok.Data;
+
+@Data
+public class AdminClothesPrintPatternVo {
+ private String patternName;
+ private String patternCode;
+ private String patternText;
+ private String patternImage;
+}
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 539929e..4a0eaa0 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -453,9 +453,6 @@
<if test="record.status == 5">
and a.status = 7 or b.state in (2,3)
</if>
- <if test="record.orderType != null">
- and a.order_type=#{record.orderType}
- </if>
</where>
order by a.created_time desc
</select>
diff --git a/src/main/resources/templates/febs/views/layout.html b/src/main/resources/templates/febs/views/layout.html
index e24480f..26bc759 100644
--- a/src/main/resources/templates/febs/views/layout.html
+++ b/src/main/resources/templates/febs/views/layout.html
@@ -64,7 +64,7 @@
<div class="layui-side-scroll">
<div class="layui-logo" style="cursor: pointer">
<img data-th-src="@{febs/images/logo.png}">
- <span>快乐社区 权限系统</span>
+ <span>设计 管理系统</span>
</div>
<script
type="text/html"
diff --git a/src/main/resources/templates/febs/views/login.html b/src/main/resources/templates/febs/views/login.html
index 56d1e29..099073f 100644
--- a/src/main/resources/templates/febs/views/login.html
+++ b/src/main/resources/templates/febs/views/login.html
@@ -2,7 +2,7 @@
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
- <title>快乐社区 权限系统</title>
+ <title>设计 管理系统</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
@@ -19,7 +19,7 @@
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4 febs-tc">
- <div class="layui-logo"><span><b>快乐社区</b> 权限系统</span></div>
+ <div class="layui-logo"><span><b>设计 </b> 管理系统</span></div>
</div>
<div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4" id="login-div">
<div class="layui-form" lay-filter="login-form">
diff --git a/src/main/resources/templates/febs/views/modules/clothesType/orderList-bak.html b/src/main/resources/templates/febs/views/modules/clothesType/orderList-bak.html
new file mode 100644
index 0000000..9bbd856
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderList-bak.html
@@ -0,0 +1,522 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-clothes-order" lay-title="订单列表">
+ <div class="layui-row febs-container">
+ <div class="layui-col-md12">
+ <div class="layui-card">
+ <div class="layui-card-body febs-table-full">
+ <form class="layui-form layui-table-form" lay-filter="clothes-order-table-form">
+ <div class="layui-form-item">
+ <div class="layui-col-md10">
+ <div class="layui-inline">
+ <label class="layui-form-label">购买人:</label>
+ <div class="layui-input-inline">
+ <input type="text" placeholder="购买人" name="name" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">订单编号:</label>
+ <div class="layui-input-inline">
+ <input type="text" placeholder="订单编号" name="orderNo" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">订单状态:</label>
+ <div class="layui-input-inline">
+ <select name="status">
+ <option value="">请选择</option>
+ <option value="1">待支付</option>
+ <option value="2">待发货</option>
+ <option value="3">待收货</option>
+ <option value="4">已完成</option>
+ <option value="5">已取消</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">支付状态:</label>
+ <div class="layui-input-inline">
+ <select name="payResult">
+ <option value="">请选择</option>
+ <option value="1">成功</option>
+ <option value="2">未成功</option>
+ </select>
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">开始时间:</label>
+ <div class="layui-input-inline">
+ <input type="text" name="startTime" id="febs-clothes-order-date-start" lay-verify="date"
+ placeholder="yyyy-MM-dd HH:mm:ss" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">结束时间:</label>
+ <div class="layui-input-inline">
+ <input type="text" name="endTime" id="febs-clothes-order-date-end" lay-verify="date"
+ placeholder="yyyy-MM-dd HH:mm:ss" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+ <i class="layui-icon"></i>
+ </div>
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+ <i class="layui-icon"></i>
+ </div>
+ </div>
+ </div>
+ </form>
+ <table lay-filter="orderClothesTable" lay-data="{id: 'orderClothesTable'}"></table>
+ <style type="text/css">
+ .layui-table cell{
+ text-align:center;
+ height: auto;
+ white-space: nowrap; /*文本不会换行,在同一行显示*/
+ overflow: hidden; /*超出隐藏*/
+ text-overflow: ellipsis; /*省略号显示*/
+ }
+ .layui-table img{
+ max-width:100px
+ }
+
+ ::-webkit-scrollbar {
+ height: 20px !important;
+ background-color: #f4f4f4;
+ }
+ </style>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<!-- 表格操作栏 start -->
+<script type="text/html" id="user-option">
+ <span shiro:lacksPermission="user:view,user:update,user:delete">
+ <span class="layui-badge-dot febs-bg-orange"></span> 无权限
+ </span>
+ <a lay-event="edit" shiro:hasPermission="user:update"><i
+ class="layui-icon febs-edit-area febs-blue"></i></a>
+</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>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmOrder">确认收货</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出待发货订单</button>
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button>
+ </div>
+</script>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+ // 引入组件并初始化
+ layui.use([ 'jquery', 'form', 'table', 'febs', 'formSelects', 'upload','laydate'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ table = layui.table,
+ upload = layui.upload,
+ $view = $('#febs-clothes-order'),
+ $query = $view.find('#query'),
+ $reset = $view.find('#reset'),
+ $searchForm = $view.find('form'),
+ sortObject = {field: 'orderTime', type: 'desc'},
+ formSelects = layui.formSelects,
+ laydate = layui.laydate,
+ tableIns;
+
+ let currPageOrder = 1;//首先默认值为1,防止出错
+ //获取当前页
+ currPageOrder = $view.find(".layui-laypage-em").next().html();
+ //日期范围
+ laydate.render({
+ elem: '#febs-clothes-order-date-start',type: 'datetime'
+ });
+
+ laydate.render({
+ elem: '#febs-clothes-order-date-end',type: 'datetime'
+ });
+
+
+ form.render();
+
+ formSelects.render();
+
+ // 表格初始化
+ initClothesOrderTable();
+
+ table.on('toolbar(orderClothesTable)', function(obj){
+ 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;
+ }
+ printSelectData(ids)
+ }
+
+ if (layEvent === 'deliverGoods') {
+ let data = checkStatus.data;
+ if (data.length > 1) {
+ febs.alert.warn('每次只能操作一个订单');
+ return;
+ }
+ let ids = "";
+ for(let i = 0;i < data.length;i++){
+ if(data[i].status != 2){
+ febs.alert.warn('请选择待发货的订单');
+ return;
+ }else{
+ ids = data[i].id;
+ }
+ }
+ console.log(ids);
+ if(ids == null || ids == ""){
+ febs.alert.warn('请选择订单');
+ return;
+ }
+ febs.modal.open('发货', 'modules/clothesType/deliverGoods/' + ids, {
+ btn: ['确认','取消'],
+ yes: function (index, layero) {
+ $('#deliver-update-clothes').find('#submit').trigger('click');
+ },
+ btn2: function () {
+ layer.closeAll();
+ }
+ });
+ }
+
+ if (layEvent === 'updateDeliver') {
+ let data = checkStatus.data;
+ if (data.length > 1) {
+ febs.alert.warn('每次只能操作一个订单');
+ return;
+ }
+ let ids = "";
+ for(let i = 0;i < data.length;i++){
+ if(data[i].status != 2){
+ febs.alert.warn('请选择待收货的订单');
+ return;
+ }else{
+ ids = data[i].id;
+ }
+ }
+ if(ids == null || ids == ""){
+ febs.alert.warn('请选择订单');
+ return;
+ }
+ febs.modal.open('修改物流信息', 'modules/clothesType/deliverGoods/' + ids, {
+ btn: ['确认','取消'],
+ yes: function (index, layero) {
+ $('#deliver-update-clothes').find('#deliverInfoSubmit').trigger('click');
+ },
+ btn2: function () {
+ layer.closeAll();
+ }
+ });
+ }
+
+ if(layEvent === 'refundOrder'){
+ let data = checkStatus.data;
+ if (data.length > 1) {
+ febs.alert.warn('每次只能操作一个订单');
+ return;
+ }
+ let ids = "";
+ for(let i = 0;i < data.length;i++){
+ if(data[i].status != 2 ){
+ febs.alert.warn('请选择待发货的订单');
+ return;
+ }else{
+ ids = data[i].id;
+ }
+ }
+ if(ids == null || ids == ""){
+ febs.alert.warn('请选择订单');
+ return;
+ }
+ febs.modal.confirm('仅退款', '确认退款订单?', function () {
+ refundOrder(ids);
+ });
+ }
+
+ if(layEvent === 'confirmOrder'){
+ let data = checkStatus.data;
+ let ids = "";
+ for(let i = 0;i < data.length;i++){
+ if(data[i].status != 3){
+ febs.alert.warn('请选择待收货的订单');
+ return;
+ }else{
+ ids = ids + data[i].id+",";
+ }
+ }
+ console.log(ids);
+ if(ids == null || ids == ""){
+ febs.alert.warn('请选择订单');
+ return;
+ }
+ febs.get(ctx + 'admin/clothesType/confirmOrder/'+ids, null, function () {
+ febs.alert.success('操作成功');
+ $query.click();
+ });
+ }
+
+ if (layEvent == 'exportDeliverTwo') {
+ let data = checkStatus.data;
+ let ids = "";
+ for(let i = 0;i < data.length;i++){
+ if(data[i].status != 2){
+ febs.alert.warn('请选择待发货的订单');
+ return;
+ }else if(data[i].deliveryState != 1){
+ febs.alert.warn('请选择待配送的订单');
+ return;
+ }else{
+ ids = ids + data[i].id+",";
+ }
+ }
+ console.log(ids);
+ if(ids == null || ids == ""){
+ febs.alert.warn('请选择待发货的订单');
+ return;
+ }
+ window.location.href = ctx + "admin/clothesType/exportOrderList?ids="+ids;
+ }
+
+ });
+
+
+ /*
+ * [自定义打印选中行数据]
+ * @param {[type]} 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("");
+ 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>" +
+
+ "<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>"
+
+ 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('操作成功');
+ $query.click();
+ });
+ }
+
+ upload.render({
+ elem: '#importDeliver'
+ ,url: 'admin/clothesType/importDeliver' //此处配置你自己的上传接口即可
+ ,accept: 'file' //普通文件
+ ,done: function(res){
+ console.log("123");
+ febs.alert.success('操作成功');
+ $query.click();
+ }
+ });
+
+
+ // 初始化表格操作栏各个按钮功能
+ table.on('tool(orderClothesTable)', function (obj) {
+ var data = obj.data,
+ layEvent = obj.event;
+ if (layEvent === 'seeOrder') {
+ febs.modal.open( '订单详情', 'modules/order/orderDetail/' + data.id, {
+ maxmin: true,
+ });
+ }
+ });
+
+
+
+ // 查询按钮
+ $query.on('click', function () {
+ var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+ tableIns.reload({where: params, page: {curr: currPageOrder}});
+ });
+
+ // 刷新按钮
+ $reset.on('click', function () {
+ $searchForm[0].reset();
+ sortObject.type = 'null';
+ tableIns.reload({where: getQueryParams(), page: {curr: currPageOrder}, initSort: sortObject});
+ });
+
+ function initClothesOrderTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'orderClothesTable',
+ url: ctx + 'admin/clothesType/orderList',
+ // defaultToolbar: [],
+ //系统自带打印导出
+ totalRow : true,
+ toolbar: '#tableToolBarClothesOrder',
+ cols: [[
+ {type: 'checkbox', fixed: 'left'},
+ {type: 'numbers', title: '', width: 80},
+ // {title: '操作',
+ // templet: function (d) {
+ // return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder">详情</button>'
+ // },minWidth: 200,align:'center'},
+ {field: 'orderNo', title: '订单编号', minWidth: 200,align:'left' ,totalRowText:"合计"},
+ {field: 'memberName', title: '购买人', minWidth: 100,align:'left'},
+ {field: 'typeName', title: '类型', minWidth: 100,align:'left'},
+ // {field: 'goodsName', title: '商品', minWidth: 160,align:'left'},
+ // {field: 'typeImage', title: '图片', minWidth: 100,align:'left'},
+ {field: 'goodsCnt', title: '数量', minWidth: 120,align:'left'},
+ {field: 'status', title: '状态',
+ templet: function (d) {
+ if (d.status === 1) {
+ return '<span style="color:red;">待支付</span>'
+ } else if (d.status === 2) {
+ return '<span style="color:green;">待发货</span>'
+ }else if (d.status === 3) {
+ return '<span style="color:green;">待收货</span>'
+ }else if (d.status === 4) {
+ return '<span style="color:green;">已完成</span>'
+ }else if (d.status === 5) {
+ return '<span style="color:green;">已取消</span>'
+ }else{
+ return ''
+ }
+ }, minWidth: 80,align:'center'},
+ {field: 'amount', title: '总价', minWidth: 80,align:'left', totalRow:true},
+ {field: 'discountAmount', title: '优惠', minWidth: 80,align:'left', totalRow:true},
+ {field: 'carriage', title: '邮费', minWidth: 80,align:'left', totalRow:true},
+ {field: 'realAmount', title: '总金额', minWidth: 100,align:'left', totalRow:true},
+ {field: 'orderTime', title: '下单时间', minWidth: 200,align:'left'},
+
+ {field: 'payMethod', title: '支付方式', minWidth: 100,align:'left'},
+ {field: 'payTime', title: '支付时间', minWidth: 120,align:'left'},
+ {field: 'remark', title: '备注', minWidth: 160,align:'left'},
+ ]]
+ });
+ }
+
+ // 获取查询参数
+ function getQueryParams() {
+ let startTimestr = $searchForm.find('input[name="startTime"]').val().trim();
+ let endTimeStr = $searchForm.find('input[name="endTime"]').val().trim();
+ if(startTimestr != '' && endTimeStr != '' && startTimestr >= endTimeStr){
+ febs.alert.warn('开始时间需要小于结束时间');
+ return{};
+ }
+ return {
+ startTime: $searchForm.find('input[name="startTime"]').val().trim(),
+ endTime: $searchForm.find('input[name="endTime"]').val().trim(),
+ name: $searchForm.find('input[name="name"]').val().trim(),
+ orderNo: $searchForm.find('input[name="orderNo"]').val().trim(),
+ payResult: $searchForm.find("select[name='payResult']").val(),
+ status: $searchForm.find("select[name='status']").val(),
+ };
+ }
+
+ })
+</script>
\ 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 9bbd856..7fcd9d5 100644
--- a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
@@ -100,7 +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="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>
@@ -108,6 +108,10 @@
<button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出待发货订单</button>
<button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button>
</div>
+</script>
+
+<script type="text/html" id="clothesOrderOption">
+ <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="orderPrint:view" lay-event="orderPrint">打印预览</button>
</script>
<!-- 表格操作栏 end -->
<script data-th-inline="none" type="text/javascript">
@@ -427,11 +431,11 @@
table.on('tool(orderClothesTable)', function (obj) {
var data = obj.data,
layEvent = obj.event;
- if (layEvent === 'seeOrder') {
- febs.modal.open( '订单详情', 'modules/order/orderDetail/' + data.id, {
- maxmin: true,
+ if (layEvent === 'orderPrint') {
+ febs.modal.open('订单编号:'+data.orderNo,'modules/clothesType/orderPrint/' + data.id, {
+ area: ['100%', '100%'],
});
- }
+ };
});
@@ -461,6 +465,7 @@
cols: [[
{type: 'checkbox', fixed: 'left'},
{type: 'numbers', title: '', width: 80},
+ {title: '操作', toolbar: '#clothesOrderOption', minWidth: 200, align: 'center'},
// {title: '操作',
// templet: function (d) {
// return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder">详情</button>'
diff --git a/src/main/resources/templates/febs/views/modules/clothesType/orderPrint.html b/src/main/resources/templates/febs/views/modules/clothesType/orderPrint.html
new file mode 100644
index 0000000..b4796b3
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderPrint.html
@@ -0,0 +1,249 @@
+<style>
+
+ .main{
+ width: 750px;
+ margin: 0 auto;
+ padding: 0 20px 20px;
+ box-sizing: border-box;
+ }
+ .main .header{
+ display: flex;
+ flex-wrap: wrap;
+ font-size: 14px;
+ }
+ .main .header .item{
+ border: 1px solid #333;
+ border-radius: 2px;
+ margin: 0 2px;
+ padding: 0 8px;
+ }
+ .main .header .item .name{
+ display: inline-block;
+ border-right: 1px solid #333;
+ margin-right: 8px;
+ padding: 3px 8px 3px 0;
+ }
+ .main .content{
+ width: 100%;
+ }
+ .main .content .box{
+ width: 100%;
+ position: relative;
+ text-align: center;
+ }
+ .main .front-box .print-images img,
+ .main .back-box .print-images img{
+ width: 440px;
+ }
+ .main .front-box .logo,
+ .main .back-box .logo{
+ width: 100px;
+ margin-top: 2px;
+ }
+ .main .front-box span,
+ .main .back-box span{
+ margin: 0 5px;
+ font-size: 12px;
+ color: red;
+ }
+ .main .front-front-one{
+ position: absolute;
+ left: 14%;
+ top: 30%;
+ text-align: right;
+ }
+ .main .front-front-two{
+ position: absolute;
+ left: 9%;
+ top: 69%;
+ text-align: right;
+ }
+ .main .front-front-three{
+ position: absolute;
+ left: 79%;
+ top: 65%;
+ text-align: left;
+ }
+ .main .back-front-one{
+ position: absolute;
+ left: 67%;
+ top: 19%;
+ text-align: left;
+ }
+ .main .memberInfo-table {
+ border-collapse: collapse;
+ font-size: 14px;
+ margin: 10px auto 30px;
+ }
+ .main .memberInfo-table, .main .memberInfo-table th, .main .memberInfo-table td {
+ border: 1px solid #333;
+ }
+ .main .memberInfo-table th, .main .memberInfo-table td {
+ padding: 5px 15px;
+ text-align: center;
+ }
+ .footer{
+ width: 100%;
+ font-size: 16px;
+ }
+ .footer>span{
+ display: inline-block;
+ width: 25%;
+ }
+ @media print {
+ .no-print {
+ display: none !important;
+ }
+ }
+</style>
+
+<div id="page"></div>
+<div style="text-align: center;margin: 10px 0 20px;" class="no-print">
+ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" onclick="window.print()">打印</button>
+</div>
+
+<script data-th-inline="javascript">
+ layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () {
+ var $ = layui.$,
+ febs = layui.febs,
+ layer = layui.layer,
+ formSelects = layui.formSelects,
+ treeSelect = layui.treeSelect,
+ form = layui.form,
+ eleTree = layui.eleTree,
+ orderPrint = [[${orderPrint}]],
+ $view = $('#page'),
+ validate = layui.validate,
+ _deptTree;
+
+ var data = orderPrint;
+ console.log(data);
+
+ var patternHtml = '';
+ if(data.patterns){
+ for(var i = 0; i < data.patterns.length; i++) {
+ patternHtml += "<div class="+"front-"+data.patterns[i].patternCode+">";
+ if(data.patterns[i].patternText){
+ patternHtml +=
+ "<div>" +
+ // "<span>" + data.patterns[i].patternName +"</span>" +
+ // "<span>" + data.patterns[i].patternCode +"</span>" +
+ "<span>文字:" + data.patterns[i].patternText +"</span>" +
+ "</div>"
+ }
+ if(data.patterns[i].patternImage){
+ patternHtml +=
+ "<div class='image-load'>" +
+ "<img src='"+ data.patterns[i].patternImage+"' class='logo' />" +
+ "</div>" +
+ "</div>"
+ }
+ }
+ }
+ var locationHtml = '';
+ if (data.locations){
+ for(var i = 0; i < data.locations.length; i++) {
+ locationHtml += "<div class="+"back-"+data.patterns[i].patternCode+">"
+ if (data.locations[i].locationText){
+ locationHtml +=
+ "<div>" +
+ // "<span>" + data.locations[i].locationName +"</span>" +
+ // "<span>" + data.locations[i].locationCode +"</span>" +
+ "<span>文字:" + data.locations[i].locationText +"</span>" +
+ "</div>"
+ }
+ if (data.locations[i].locationImage){
+ locationHtml +=
+ "<div class='image-load'>" +
+ "<img src='"+ data.locations[i].locationImage+"' class='logo' />" +
+ "</div>" +
+ "</div>"
+ }
+ }
+ }
+
+ var memberStatureHtml = '';
+ if (data.memberStature){
+ memberStatureHtml +=
+ "<table class='memberInfo-table'>" +
+ "<tr>" +
+ "<th colspan='9'>"+data.memberStature.name+"</th>" +
+ "</tr>" +
+ "<tr>" +
+ "<td>身高</td>" +
+ "<td>胸围</td>" +
+ "<td>腰围</td>" +
+ "<td>肩宽</td>" +
+ "<td>臀围</td>" +
+ "</tr>" +
+ "<tr>" +
+ "<td>"+data.memberStature.heightLine+"</td>" +
+ "<td>"+data.memberStature.bustLine+"</td>" +
+ "<td>"+data.memberStature.waistLine+"</td>" +
+ "<td>"+data.memberStature.wideLine+"</td>" +
+ "<td>"+data.memberStature.hipLine+"</td>" +
+ "</tr>" +
+ "</table>"
+ }
+
+ var mainHtml = "<div class='main'>" +
+ "<div class='header'>" +
+ "<div class='item'><span class='name'>类型:</span>" + data.typeName + "</div>" +
+ "<div class='item'><span class='name'>布料:</span>" + data.clothName+ "("+data.clothCode+")"+ "</div><br>" +
+ "<div class='item'><span class='name'>尺码:</span>" + data.sizeName + "("+data.sizeCode+")"+ "</div>" +
+ "<div class='item'><span class='name'>工艺:</span>" + data.artName + "("+data.artCode+")"+ "</div>" +
+ "</div>" +
+ "<div class='content'>" +
+ "<div class='front-box box'>" +
+ "<div class='print-images'>" +
+ "<div class='image-load'>" +
+ "<img src="+ data.typeFront+">" +
+ "</div>" +
+ "</div>" +
+ patternHtml +
+ "</div>" +
+ "<div class='back-box box'>" +
+ "<div class='print-images'>" +
+ "<div class='image-load'>" +
+ "<img src="+ data.typeBack+">" +
+ "</div>" +
+ "</div>" +
+ locationHtml +
+ memberStatureHtml +
+ "</div>" +
+ "</div>" +
+ "<div class='footer'>" +
+ "<span>审核:</span>" +
+ "<span>审批:</span>" +
+ "<span>版师:</span>" +
+ "<span>工艺师:</span>" +
+ "</div>"
+ "</div>";
+
+ document.querySelector('#page').innerHTML = mainHtml;
+
+ // //在新窗口的 document 中查找图片
+ // ensureImagesLoaded(document, '.image-load img')
+ // .catch(() => layer.msg('图片加载中'));
+ //
+ // 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);
+ // }
+
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 1b49752..cf7f0af 100644
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -3,7 +3,7 @@
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<meta charset="utf-8">
- <title>快乐社区 权限系统</title>
+ <title>设计 管理系统</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--
Gitblit v1.9.1