From f314af7ad20f9f801c14a20dbe7594004a818950 Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Sun, 6 Oct 2024 08:38:50 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E8=B0=83=E6=95=B4=20=E7=A8=BF=E4=BB=B6?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=AD=98=E5=82=A8=E6=96=B9=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=A7=E5=93=81=E5=B7=A5=E8=89=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/oms/enums/ErrorCodeConstants.java | 1 + .../productinfo/dto/ProductInfoPageDTO.java | 99 +++ .../productinfo/vo/ProductInfoPageReqVO.java | 28 + .../productinfo/vo/ProductInfoRespVO.java | 48 +- .../productinfo/vo/ProductInfoSaveReqVO.java | 33 + .../ProductProcessController.java | 95 +++ .../vo/ProductProcessPageReqVO.java | 34 + .../vo/ProductProcessRespVO.java | 39 + .../vo/ProductProcessSaveReqVO.java | 27 + .../saleorder/dto/CreateSaleOrderDTO.java | 52 ++ .../admin/saleorder/dto/PropSortInfo.java | 36 + .../saleorder/dto/SaleOrderEntryItemDTO.java | 66 ++ .../admin/saleorder/dto/SaleOrderSkuDTO.java | 67 ++ .../admin/saleorder/dto/SpecInfoDTO.java | 36 + .../dataobject/productinfo/ProductInfoDO.java | 37 + .../productprocess/ProductProcessDO.java | 47 ++ .../productprocess/ProductProcessMapper.java | 30 + .../productinfo/ProductInfoServiceImpl.java | 55 +- .../productprocess/ProductProcessService.java | 55 ++ .../ProductProcessServiceImpl.java | 74 ++ .../productprocess/ProductProcessMapper.xml | 12 + .../src/api/oms/productinfo/index.ts | 7 +- .../src/api/oms/productprocess/index.js | 53 ++ .../src/api/oms/productprocess/index.ts | 44 + .../src/DraftDesignImageLibDialog/index.vue | 10 +- .../components/DesignPreviewDialog.vue | 12 +- .../DraftDesign/components/DesignPropEdit.vue | 213 +++-- .../components/DynamicPropConfig.vue | 89 +- .../components/ImageLibraryManage.vue | 11 +- .../components/node/ShapeImageNode.vue | 6 +- .../DraftDesign/icons/fonts/icomoon.eot | Bin 14628 -> 14628 bytes .../DraftDesign/icons/fonts/icomoon.ttf | Bin 14464 -> 14464 bytes .../DraftDesign/icons/fonts/icomoon.woff | Bin 14540 -> 14540 bytes .../src/components/DraftDesign/index.vue | 46 +- .../src/components/DraftDesign/utils/Dpi.ts | 8 +- .../src/views/base/producttype/index.vue | 28 +- .../oms/draftdesigndata/detials/index.vue | 12 +- .../src/views/oms/draftdesigndata/index.vue | 17 +- .../views/oms/productinfo/ProductInfoForm.vue | 453 +++++++--- .../src/views/oms/productinfo/index.vue | 49 +- .../src/api/infra/file/index.ts | 2 +- .../src/api/oms/productinfo/index.ts | 7 +- .../src/api/oms/productprocess/index.ts | 44 + .../src/DraftDesignImageLibDialog/index.vue | 10 +- .../src/ProductInfoListDialog/DataForm.vue | 69 ++ .../src/ProductInfoListDialog/config.data.ts | 43 + .../src/ProductInfoListDialog/index.vue | 308 +++++++ .../components/DesignPreviewDialog.vue | 12 +- .../DraftDesign/components/DesignPropEdit.vue | 223 +++-- .../components/DynamicPropConfig.vue | 89 +- .../components/ImageLibraryManage.vue | 11 +- .../components/node/ShapeImageNode.vue | 6 +- .../DraftDesign/icons/fonts/Read Me.txt | 7 - .../icons/fonts/demo-files/demo.css | 152 ---- .../icons/fonts/demo-files/demo.js | 30 - .../DraftDesign/icons/fonts/demo.html | 794 ------------------ .../DraftDesign/icons/fonts/fonts/icomoon.eot | Bin 12020 -> 0 bytes .../DraftDesign/icons/fonts/fonts/icomoon.svg | 64 -- .../DraftDesign/icons/fonts/fonts/icomoon.ttf | Bin 11856 -> 0 bytes .../icons/fonts/fonts/icomoon.woff | Bin 11932 -> 0 bytes .../DraftDesign/icons/fonts/icomoon.eot | Bin 14628 -> 14628 bytes .../DraftDesign/icons/fonts/icomoon.ttf | Bin 14464 -> 14464 bytes .../DraftDesign/icons/fonts/icomoon.woff | Bin 14540 -> 14540 bytes .../DraftDesign/icons/fonts/selection.json | 1 - .../DraftDesign/icons/fonts/style.css | 189 ----- .../src/components/DraftDesign/index.vue | 46 +- .../src/components/DraftDesign/utils/Dpi.ts | 8 +- .../src/components/Form/src/Form.vue | 1 - .../components/ProductInfoList/DataForm.vue | 70 ++ .../components/ProductInfoList/config.data.ts | 48 ++ .../src/components/ProductInfoList/index.vue | 273 ++++++ .../src/components/Search/src/Search.vue | 10 +- .../hangtag-ui-front/src/styles/index.scss | 8 + .../hangtag-ui-front/src/utils/tsxHelper.ts | 1 + .../oms/draftdesigndata/detials/index.vue | 12 +- .../src/views/oms/draftdesigndata/index.vue | 17 +- .../OrderAddProductStep/ProductItem1.vue | 211 +++++ .../OrderAddProductStep/ProductList.vue | 159 ++++ .../OrderAddProductStep/ProductSkuList.vue | 102 +++ .../components/OrderAddProductStep/index.vue | 77 ++ .../src/views/oms/order/createorder/index.vue | 367 ++++---- .../views/oms/productinfo/ProductInfoForm.vue | 453 +++++++--- .../src/views/oms/productinfo/index.vue | 49 +- .../调整设计模板字段,新增产品工艺表.sql | 22 + 84 files changed, 4057 insertions(+), 1967 deletions(-) create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/dto/ProductInfoPageDTO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/ProductProcessController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessPageReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessRespVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessSaveReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/PropSortInfo.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SpecInfoDTO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productprocess/ProductProcessDO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/productprocess/ProductProcessMapper.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessService.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessServiceImpl.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/productprocess/ProductProcessMapper.xml create mode 100644 hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js create mode 100644 hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.ts create mode 100644 hangtag-ui/hangtag-ui-front/src/api/oms/productprocess/index.ts create mode 100644 hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/DataForm.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/config.data.ts create mode 100644 hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/index.vue delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/Read Me.txt delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/demo-files/demo.css delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/demo-files/demo.js delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/demo.html delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.eot delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.svg delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.ttf delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.woff delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/selection.json delete mode 100644 hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/style.css create mode 100644 hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/DataForm.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/config.data.ts create mode 100644 hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductItem1.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductSkuList.vue create mode 100644 hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/index.vue create mode 100644 sql/mysql/20241006/调整设计模板字段,新增产品工艺表.sql diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index 70eaea2..beab5bb 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -6,6 +6,7 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro // ========== 产品资料 TODO 补充编号 ========== ErrorCode PRODUCT_INFO_NOT_EXISTS = new ErrorCode(3200, "产品资料 不存在"); + ErrorCode PRODUCT_PROCESS_NOT_EXISTS = new ErrorCode(3201, "产品工艺 不存在"); ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(3300, "客户不存在"); ErrorCode SHAPE_TEMPLATE_NOT_EXISTS = new ErrorCode(3400, "图形模板管理 不存在"); ErrorCode DRAFT_DESIGN_DATA_NOT_EXISTS = new ErrorCode(3500, "稿件模板数据 不存在"); diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/dto/ProductInfoPageDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/dto/ProductInfoPageDTO.java new file mode 100644 index 0000000..6d8c159 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/dto/ProductInfoPageDTO.java @@ -0,0 +1,99 @@ +package cn.hangtag.module.oms.controller.admin.productinfo.dto; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +public class ProductInfoPageDTO implements Serializable { + + /** + * id + */ + @TableId + private Long id; + /** + * 产品编码 + */ + private String code; + /** + * 产品名称 + */ + private String name; + /** + * 封面 + */ + private String cover; + /** + * 品牌 + */ + private Long brandId; + /** + * 产品类型id + */ + private Long productTypeId; + /** + * 设计稿id + */ + private String draftDesignDataId; + /** + * 设计稿列表 json数据带名称 + */ + private String draftDesignList; + + /** + * 启用状态 + */ + private Boolean enabled; + /** + * 备注 + */ + private String remark; + /** + * 详情介绍 + */ + private String details; + + /** + * 简述 + */ + private String summary; + + /** + * 规格尺寸宽度 + */ + private Double specSizeWidth; + + /** + * 规格尺寸高度 + */ + private Double specSizeHeight; + + /** + * 规格厚度 + */ + private Double specSizeThk; + + /** + * 规格材质 + */ + private String specMaterial; + /** + * 品牌名称 + */ + private String brandName; + + /** + * 类型名称 + */ + private String productTypeName; + + /** + * 创建时间 + */ + private LocalDateTime createTime; +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoPageReqVO.java index 4fdae2b..103f157 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoPageReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoPageReqVO.java @@ -1,5 +1,6 @@ package cn.hangtag.module.oms.controller.admin.productinfo.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -45,6 +46,33 @@ public class ProductInfoPageReqVO extends PageParam { @Schema(description = "详情介绍") private String details; + @Schema(description = "简述") + private String summary; + + /** + * 规格尺寸宽度 + */ + @Schema(description = "规格尺寸宽度") + private Double specSizeWidth; + + /** + * 规格尺寸高度 + */ + @Schema(description = "规格尺寸高度") + private Double specSizeHeight; + + /** + * 规格厚度 + */ + @Schema(description = "规格厚度") + private Double specSizeThk; + + /** + * 规格材质 + */ + @Schema(description = "规格材质") + private String specMaterial; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoRespVO.java index 700c097..59ad735 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoRespVO.java @@ -1,5 +1,6 @@ package cn.hangtag.module.oms.controller.admin.productinfo.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -40,22 +41,63 @@ public class ProductInfoRespVO { @ExcelProperty("设计稿id") private String draftDesignDataId; - @Schema(description = "设计稿列表 json数据带名称") - @ExcelProperty("设计稿列表 json数据带名称") + @Schema(description = "设计稿列表") + @ExcelProperty("设计稿列表") private String draftDesignList; @Schema(description = "启用状态") @ExcelProperty("启用状态") private Boolean enabled; - @Schema(description = "备注", example = "你说的对") + @Schema(description = "备注") @ExcelProperty("备注") private String remark; + @Schema(description = "品牌名称") + @ExcelProperty("品牌名称") + private String brandName; + + @Schema(description = "产品类型名称") + @ExcelProperty("产品类型名称") + private String productTypeName; + + @Schema(description = "详情介绍") @ExcelProperty("详情介绍") private String details; + @Schema(description = "简述") + @ExcelProperty("简述") + private String summary; + + /** + * 规格尺寸宽度 + */ + @Schema(description = "规格尺寸宽度") + @ExcelProperty("规格尺寸宽度") + private Double specSizeWidth; + + /** + * 规格尺寸高度 + */ + @Schema(description = "规格尺寸高度") + @ExcelProperty("规格尺寸高度") + private Double specSizeHeight; + + /** + * 规格厚度 + */ + @Schema(description = "规格厚度") + @ExcelProperty("规格厚度") + private Double specSizeThk; + + /** + * 规格材质 + */ + @Schema(description = "规格材质") + @ExcelProperty("规格材质") + private String specMaterial; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoSaveReqVO.java index 141f1d9..47b950c 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoSaveReqVO.java @@ -1,5 +1,8 @@ package cn.hangtag.module.oms.controller.admin.productinfo.vo; +import cn.hangtag.module.oms.controller.admin.productprocess.vo.ProductProcessSaveReqVO; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -43,4 +46,34 @@ public class ProductInfoSaveReqVO { @Schema(description = "详情介绍") private String details; + @Schema(description = "简述") + private String summary; + + /** + * 规格尺寸宽度 + */ + @Schema(description = "规格尺寸宽度") + private Double specSizeWidth; + + /** + * 规格尺寸高度 + */ + @Schema(description = "规格尺寸高度") + private Double specSizeHeight; + + /** + * 规格厚度 + */ + @Schema(description = "规格厚度") + private Double specSizeThk; + + /** + * 规格材质 + */ + @Schema(description = "规格材质") + private String specMaterial; + + @Schema(description = "产品信息工艺列表") + private List productProcessList; + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/ProductProcessController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/ProductProcessController.java new file mode 100644 index 0000000..06aacc2 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/ProductProcessController.java @@ -0,0 +1,95 @@ +package cn.hangtag.module.oms.controller.admin.productprocess; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.util.object.BeanUtils; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +import cn.hangtag.framework.excel.core.util.ExcelUtils; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.hangtag.module.oms.controller.admin.productprocess.vo.*; +import cn.hangtag.module.oms.dal.dataobject.productprocess.ProductProcessDO; +import cn.hangtag.module.oms.service.productprocess.ProductProcessService; + +@Tag(name = "管理后台 - 产品工艺 ") +@RestController +@RequestMapping("/oms/product-process") +@Validated +public class ProductProcessController { + + @Resource + private ProductProcessService productProcessService; + + @PostMapping("/create") + @Operation(summary = "创建产品工艺 ") + @PreAuthorize("@ss.hasPermission('oms:product-process:create')") + public CommonResult createProductProcess(@Valid @RequestBody ProductProcessSaveReqVO createReqVO) { + return success(productProcessService.createProductProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新产品工艺 ") + @PreAuthorize("@ss.hasPermission('oms:product-process:update')") + public CommonResult updateProductProcess(@Valid @RequestBody ProductProcessSaveReqVO updateReqVO) { + productProcessService.updateProductProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品工艺 ") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oms:product-process:delete')") + public CommonResult deleteProductProcess(@RequestParam("id") Long id) { + productProcessService.deleteProductProcess(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得产品工艺 ") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('oms:product-process:query')") + public CommonResult getProductProcess(@RequestParam("id") Long id) { + ProductProcessDO productProcess = productProcessService.getProductProcess(id); + return success(BeanUtils.toBean(productProcess, ProductProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品工艺 分页") + @PreAuthorize("@ss.hasPermission('oms:product-process:query')") + public CommonResult> getProductProcessPage(@Valid ProductProcessPageReqVO pageReqVO) { + PageResult pageResult = productProcessService.getProductProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProductProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出产品工艺 Excel") + @PreAuthorize("@ss.hasPermission('oms:product-process:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProductProcessExcel(@Valid ProductProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = productProcessService.getProductProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "产品工艺 .xls", "数据", ProductProcessRespVO.class, + BeanUtils.toBean(list, ProductProcessRespVO.class)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessPageReqVO.java new file mode 100644 index 0000000..d2e7026 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessPageReqVO.java @@ -0,0 +1,34 @@ +package cn.hangtag.module.oms.controller.admin.productprocess.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.hangtag.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品工艺 分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProductProcessPageReqVO extends PageParam { + + @Schema(description = "名称", example = "芋艿") + private String name; + + @Schema(description = "说明", example = "你猜") + private String remark; + + @Schema(description = "工序") + private Integer step; + + @Schema(description = "产品id oms_product_info", example = "21605") + private Long productInfoId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessRespVO.java new file mode 100644 index 0000000..7a0af3c --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessRespVO.java @@ -0,0 +1,39 @@ +package cn.hangtag.module.oms.controller.admin.productprocess.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 产品工艺 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProductProcessRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26235") + @ExcelProperty("id") + private Long id; + + @Schema(description = "名称", example = "芋艿") + @ExcelProperty("名称") + private String name; + + @Schema(description = "说明", example = "你猜") + @ExcelProperty("说明") + private String remark; + + @Schema(description = "工序") + @ExcelProperty("工序") + private Integer step; + + @Schema(description = "产品id oms_product_info", example = "21605") + @ExcelProperty("产品id oms_product_info") + private Long productInfoId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessSaveReqVO.java new file mode 100644 index 0000000..53320df --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productprocess/vo/ProductProcessSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.hangtag.module.oms.controller.admin.productprocess.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 产品工艺 新增/修改 Request VO") +@Data +public class ProductProcessSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26235") + private Long id; + + @Schema(description = "名称", example = "芋艿") + private String name; + + @Schema(description = "说明", example = "你猜") + private String remark; + + @Schema(description = "工序") + private Integer step; + + @Schema(description = "产品id oms_product_info", example = "21605") + private Long productInfoId; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java new file mode 100644 index 0000000..901b4b1 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java @@ -0,0 +1,52 @@ +package cn.hangtag.module.oms.controller.admin.saleorder.dto; + +import lombok.Data; + +import java.io.Serializable; +@Data +public class CreateSaleOrderDTO implements Serializable { + + private String name; + + private String email; + + private String contacts; + + private String phone; + + private String invoiceCode; + + private String invoiceName; + + private String invoiceAddress; + + private Long areaId; + + private Integer status; + + private Integer type; + + private String remarks; + + private String orderNo; + + + + + private String newEmail; + + private String[] newEmails; + + /** + * 订单创建日期 + */ + private String bizdate; + + /** + * 交货日期 + */ + private String plansenddate; + + private SaleOrderEntryItemDTO[] saleOrderEntry; + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/PropSortInfo.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/PropSortInfo.java new file mode 100644 index 0000000..085edfd --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/PropSortInfo.java @@ -0,0 +1,36 @@ +package cn.hangtag.module.oms.controller.admin.saleorder.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 订单动态属性排序信息 + * + * @author YuanFeng + * @date 2024/10/02 + */ +@Data +public class PropSortInfo implements Serializable { + + /** + * 唯一key + */ + private String key; + + /** + * 名称 + */ + private String name; + + /** + * 形状 + */ + private String shape; + + /** + * 是组合 + */ + private Boolean isCombo; + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java new file mode 100644 index 0000000..b65e531 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java @@ -0,0 +1,66 @@ +package cn.hangtag.module.oms.controller.admin.saleorder.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 销售订单条目项目dto + * + * @author YuanFeng + * @date 2024/10/02 + */ +@Data +public class SaleOrderEntryItemDTO implements Serializable { + + /** + * 数据key + */ + private String key; + + /** + * 生产者 + */ + private String producer; + + /** + * 产品id + */ + private Long productId; + + /** + * 产品编码 + */ + private String productCode; + /** + * 产品名称 + */ + private String productName; + /** + * 产品封面 + */ + private String cover; + + + /** + * 订货数量 + */ + private Integer orderQty; + /** + * 总数量 + */ + private Integer totalQty; + /** + * 交货日期 + */ + private Long deliveryDate; + + + /** + * 产品sku + */ + List productSkuList; + + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java new file mode 100644 index 0000000..81d800e --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java @@ -0,0 +1,67 @@ +package cn.hangtag.module.oms.controller.admin.saleorder.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 销售订单sku dto + * + * @author YuanFeng + * @date 2024/10/02 + */ +@Data +public class SaleOrderSkuDTO implements Serializable { + + private String key; + + /** + * 产品id + */ + private Long productId; + + /** + * 订货数量 + */ + private Long orderQty; + + /** + * 草图设计id + */ + private Long draftDesignId; + + + /** + * 设计稿内容宽度 + */ + private Integer width; + + /** + * 设计稿内容高度 + */ + private Integer height; + + /** + * 最终稿件 base64编码数据 + */ + private String previewImage; + + /** + * 动态属性json配置信息 + */ + private String propInfo; + + /** + * 动态属性 排序信息 + */ + private List propOrderByList; + + /** + * 规格信息 + */ + private SpecInfoDTO specInfo; + + + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SpecInfoDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SpecInfoDTO.java new file mode 100644 index 0000000..5ffafb4 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SpecInfoDTO.java @@ -0,0 +1,36 @@ +package cn.hangtag.module.oms.controller.admin.saleorder.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 规格信息dto + * + * @author YuanFeng + * @date 2024/10/02 + */ +@Data +public class SpecInfoDTO implements Serializable { + + /** + * 规格尺寸宽度 + */ + private Integer specSizeWidth; + /** + * 规格尺寸高度 + */ + private Integer specSizeHeight; + /** + * 规格尺寸厚度 + */ + private Integer specSizeThk; + /** + * 规格材质 + */ + private String specMaterial; + /** + * 主色调 + */ + private String mainColor; +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productinfo/ProductInfoDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productinfo/ProductInfoDO.java index 02b527f..93abe1d 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productinfo/ProductInfoDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productinfo/ProductInfoDO.java @@ -1,5 +1,6 @@ package cn.hangtag.module.oms.dal.dataobject.productinfo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -55,6 +56,7 @@ public class ProductInfoDO extends BaseDO { * 设计稿列表 json数据带名称 */ private String draftDesignList; + /** * 启用状态 */ @@ -68,10 +70,45 @@ public class ProductInfoDO extends BaseDO { */ private String details; + /** + * 简述 + */ + private String summary; + + /** + * 规格尺寸宽度 + */ + private Double specSizeWidth; + + /** + * 规格尺寸高度 + */ + private Double specSizeHeight; + + /** + * 规格厚度 + */ + @TableField("spec_size_thk") + private Double specSizeThk; + + /** + * 规格材质 + */ + @TableField("spec_material") + private String specMaterial; + + + /** * 品牌名称 */ @TableField(exist = false) private String brandName; + /** + * 类型名称 + */ + @TableField(exist = false) + private String productTypeName; + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productprocess/ProductProcessDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productprocess/ProductProcessDO.java new file mode 100644 index 0000000..9cd114a --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/productprocess/ProductProcessDO.java @@ -0,0 +1,47 @@ +package cn.hangtag.module.oms.dal.dataobject.productprocess; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; + +/** + * 产品工艺 DO + * + * @author 管理员 + */ +@TableName("oms_product_process") +@KeySequence("oms_product_process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProductProcessDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 名称 + */ + private String name; + /** + * 说明 + */ + private String remark; + /** + * 工序 + */ + private Integer step; + /** + * 产品id oms_product_info + */ + private Long productInfoId; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/productprocess/ProductProcessMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/productprocess/ProductProcessMapper.java new file mode 100644 index 0000000..cc1d5c4 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/productprocess/ProductProcessMapper.java @@ -0,0 +1,30 @@ +package cn.hangtag.module.oms.dal.mysql.productprocess; + +import java.util.*; + +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.module.oms.dal.dataobject.productprocess.ProductProcessDO; +import org.apache.ibatis.annotations.Mapper; +import cn.hangtag.module.oms.controller.admin.productprocess.vo.*; + +/** + * 产品工艺 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProductProcessMapper extends BaseMapperX { + + default PageResult selectPage(ProductProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ProductProcessDO::getName, reqVO.getName()) + .eqIfPresent(ProductProcessDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ProductProcessDO::getStep, reqVO.getStep()) + .eqIfPresent(ProductProcessDO::getProductInfoId, reqVO.getProductInfoId()) + .betweenIfPresent(ProductProcessDO::getCreateTime, reqVO.getCreateTime()) + .orderByAsc(ProductProcessDO::getStep)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java index f3277e0..0faf156 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java @@ -4,9 +4,15 @@ import cn.hangtag.framework.common.exception.ServiceException; import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.hangtag.framework.common.util.FuncUtil; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; +import cn.hangtag.module.oms.base.dal.dataobject.producttype.ProductTypeDO; +import cn.hangtag.module.oms.base.dal.mysql.producttype.ProductTypeMapper; +import cn.hangtag.module.oms.controller.admin.productinfo.dto.ProductInfoPageDTO; +import cn.hangtag.module.oms.controller.admin.productprocess.vo.ProductProcessSaveReqVO; import cn.hangtag.module.oms.dal.dataobject.brand.BrandDO; import cn.hangtag.module.oms.dal.dataobject.draftdesigndata.DraftDesignDataDO; +import cn.hangtag.module.oms.dal.dataobject.productprocess.ProductProcessDO; import cn.hangtag.module.oms.dal.mysql.brand.BrandMapper; +import cn.hangtag.module.oms.dal.mysql.productprocess.ProductProcessMapper; import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.AllArgsConstructor; @@ -43,6 +49,8 @@ public class ProductInfoServiceImpl implements ProductInfoService { private final ProductInfoMapper productInfoMapper; private final BrandMapper brandMapper; + private final ProductTypeMapper productTypeMapper; + private final ProductProcessMapper productProcessMapper; @Override public Long createProductInfo(ProductInfoSaveReqVO createReqVO) { @@ -55,7 +63,20 @@ public class ProductInfoServiceImpl implements ProductInfoService { productInfo.setCode(getNewCode()); } productInfoMapper.insert(productInfo); - // 返回 + + List productProcessList = createReqVO.getProductProcessList(); + if(FuncUtil.isNotEmpty(productProcessList)){ + List subList = new ArrayList<>(); + for (ProductProcessSaveReqVO reqVO : productProcessList) { + ProductProcessDO processDO = new ProductProcessDO(); + processDO.setProductInfoId(productInfo.getId()); + processDO.setName(reqVO.getName()); + processDO.setRemark(reqVO.getRemark()); + processDO.setStep(reqVO.getStep()); + subList.add(processDO); + } + productProcessMapper.insertBatch(subList); + } return productInfo.getId(); } @@ -70,7 +91,30 @@ public class ProductInfoServiceImpl implements ProductInfoService { }else { updateReqVO.setCode(getNewCode()); } - + List productProcessList = updateReqVO.getProductProcessList(); + if(FuncUtil.isNotEmpty(productProcessList)){ + List addList = new ArrayList<>(); + List updateList = new ArrayList<>(); + for (ProductProcessSaveReqVO reqVO : productProcessList) { + ProductProcessDO processDO = new ProductProcessDO(); + processDO.setProductInfoId(updateReqVO.getId()); + processDO.setName(reqVO.getName()); + processDO.setRemark(reqVO.getRemark()); + processDO.setStep(reqVO.getStep()); + if(FuncUtil.isEmpty(reqVO.getId())){ + addList.add(processDO); + }else{ + processDO.setId(reqVO.getId()); + updateList.add(processDO); + } + } + if(FuncUtil.isNotEmpty(addList)){ + productProcessMapper.insertBatch(addList); + } + if(FuncUtil.isNotEmpty(updateList)){ + productProcessMapper.updateBatch(updateList); + } + } // 更新 ProductInfoDO updateObj = BeanUtils.toBean(updateReqVO, ProductInfoDO.class); productInfoMapper.updateById(updateObj); @@ -106,7 +150,14 @@ public class ProductInfoServiceImpl implements ProductInfoService { productInfoDO.setBrandName(brandDO.getName()); } } + if(FuncUtil.isNotEmpty(productInfoDO.getProductTypeId())){ + ProductTypeDO productTypeDO = productTypeMapper.selectById(productInfoDO.getProductTypeId()); + if(FuncUtil.isNotEmpty(productTypeDO)){ + productInfoDO.setProductTypeName(productTypeDO.getLabel()); + } + } }); + productInfoDOPageResult.setList(list); return productInfoDOPageResult; } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessService.java new file mode 100644 index 0000000..bd30305 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessService.java @@ -0,0 +1,55 @@ +package cn.hangtag.module.oms.service.productprocess; + +import java.util.*; +import javax.validation.*; +import cn.hangtag.module.oms.controller.admin.productprocess.vo.*; +import cn.hangtag.module.oms.dal.dataobject.productprocess.ProductProcessDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; + +/** + * 产品工艺 Service 接口 + * + * @author 管理员 + */ +public interface ProductProcessService { + + /** + * 创建产品工艺 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductProcess(@Valid ProductProcessSaveReqVO createReqVO); + + /** + * 更新产品工艺 + * + * @param updateReqVO 更新信息 + */ + void updateProductProcess(@Valid ProductProcessSaveReqVO updateReqVO); + + /** + * 删除产品工艺 + * + * @param id 编号 + */ + void deleteProductProcess(Long id); + + /** + * 获得产品工艺 + * + * @param id 编号 + * @return 产品工艺 + */ + ProductProcessDO getProductProcess(Long id); + + /** + * 获得产品工艺 分页 + * + * @param pageReqVO 分页查询 + * @return 产品工艺 分页 + */ + PageResult getProductProcessPage(ProductProcessPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessServiceImpl.java new file mode 100644 index 0000000..17e0005 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productprocess/ProductProcessServiceImpl.java @@ -0,0 +1,74 @@ +package cn.hangtag.module.oms.service.productprocess; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.hangtag.module.oms.controller.admin.productprocess.vo.*; +import cn.hangtag.module.oms.dal.dataobject.productprocess.ProductProcessDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.util.object.BeanUtils; + +import cn.hangtag.module.oms.dal.mysql.productprocess.ProductProcessMapper; + +import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; + +/** + * 产品工艺 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProductProcessServiceImpl implements ProductProcessService { + + @Resource + private ProductProcessMapper productProcessMapper; + + @Override + public Long createProductProcess(ProductProcessSaveReqVO createReqVO) { + // 插入 + ProductProcessDO productProcess = BeanUtils.toBean(createReqVO, ProductProcessDO.class); + productProcessMapper.insert(productProcess); + // 返回 + return productProcess.getId(); + } + + @Override + public void updateProductProcess(ProductProcessSaveReqVO updateReqVO) { + // 校验存在 + validateProductProcessExists(updateReqVO.getId()); + // 更新 + ProductProcessDO updateObj = BeanUtils.toBean(updateReqVO, ProductProcessDO.class); + productProcessMapper.updateById(updateObj); + } + + @Override + public void deleteProductProcess(Long id) { + // 校验存在 + validateProductProcessExists(id); + // 删除 + productProcessMapper.deleteById(id); + } + + private void validateProductProcessExists(Long id) { + if (productProcessMapper.selectById(id) == null) { + throw exception(PRODUCT_PROCESS_NOT_EXISTS); + } + } + + @Override + public ProductProcessDO getProductProcess(Long id) { + return productProcessMapper.selectById(id); + } + + @Override + public PageResult getProductProcessPage(ProductProcessPageReqVO pageReqVO) { + return productProcessMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/productprocess/ProductProcessMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/productprocess/ProductProcessMapper.xml new file mode 100644 index 0000000..9df31e7 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/productprocess/ProductProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/productinfo/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/productinfo/index.ts index 6497f5f..6f6c8e6 100644 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/productinfo/index.ts +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/productinfo/index.ts @@ -10,9 +10,14 @@ export interface ProductInfoVO { enabled: boolean // 启用状态 remark: string // 备注 details: string // 详情介绍 - cover: string // 封面 + cover?: string // 封面 draftDesignList: string, // 设计稿列表 draftDesignDataId: string // 设计稿数据id + summary?: string + specSizeWidth: number | string + specSizeHeight: number | string + specSizeThk: number | string + specMaterial: string } // 产品资料 API diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js b/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js new file mode 100644 index 0000000..6ee86b4 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 创建产品工艺 +export function createProductProcess(data) { + return request({ + url: '/oms/product-process/create', + method: 'post', + data: data + }) +} + +// 更新产品工艺 +export function updateProductProcess(data) { + return request({ + url: '/oms/product-process/update', + method: 'put', + data: data + }) +} + +// 删除产品工艺 +export function deleteProductProcess(id) { + return request({ + url: '/oms/product-process/delete?id=' + id, + method: 'delete' + }) +} + +// 获得产品工艺 +export function getProductProcess(id) { + return request({ + url: '/oms/product-process/get?id=' + id, + method: 'get' + }) +} + +// 获得产品工艺 分页 +export function getProductProcessPage(params) { + return request({ + url: '/oms/product-process/page', + method: 'get', + params + }) +} +// 导出产品工艺 Excel +export function exportProductProcessExcel(params) { + return request({ + url: '/oms/product-process/export-excel', + method: 'get', + params, + responseType: 'blob' + }) +} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.ts new file mode 100644 index 0000000..ad9a3f5 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +// 产品工艺 VO +export interface ProductProcessVO { + id: number // id + name: string // 名称 + key: string // 临时key + remark: string // 说明 + step: number // 工序 + productInfoId: number // 产品id oms_product_info +} + +// 产品工艺 API +export const ProductProcessApi = { + // 查询产品工艺 分页 + getProductProcessPage: async (params: any) => { + return await request.get({ url: `/oms/product-process/page`, params }) + }, + + // 查询产品工艺 详情 + getProductProcess: async (id: number) => { + return await request.get({ url: `/oms/product-process/get?id=` + id }) + }, + + // 新增产品工艺 + createProductProcess: async (data: ProductProcessVO) => { + return await request.post({ url: `/oms/product-process/create`, data }) + }, + + // 修改产品工艺 + updateProductProcess: async (data: ProductProcessVO) => { + return await request.put({ url: `/oms/product-process/update`, data }) + }, + + // 删除产品工艺 + deleteProductProcess: async (id: number) => { + return await request.delete({ url: `/oms/product-process/delete?id=` + id }) + }, + + // 导出产品工艺 Excel + exportProductProcess: async (params) => { + return await request.download({ url: `/oms/product-process/export-excel`, params }) + }, +} diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue index d9d1828..cf5d456 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue @@ -95,6 +95,7 @@ import {replaceDomain} from "@/utils"; import {ShapeType} from "@/components/DraftDesign/config"; import {Search} from "@element-plus/icons-vue"; import {createImageViewer} from "@/components/ImageViewer"; +import {convertImageToBase64} from "@/components/DraftDesign/utils/Dpi"; /** 稿件图片库 */ defineOptions({name: 'DraftDesignImageLibDialog'}) @@ -210,8 +211,13 @@ const updateVisible = (visible: boolean) => { defineExpose({}) // 提供 open 方法,用于打开弹窗 const submit = () => { - emit("update:modelValue", that.iconUrl) - updateVisible(false) + // 转成base64 + convertImageToBase64(that.iconUrl).then((res:string) => { + that.iconUrl = res; + emit("update:modelValue", that.iconUrl) + updateVisible(false) + }) + } const clearData = ()=>{ that.iconUrl = ''; diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue index 1492e01..ce2d9d4 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPreviewDialog.vue @@ -40,7 +40,7 @@ const preview = (config,prop={})=>{ setTimeout(()=>{ designPropEditRef.value.loadConfig(config,prop); that.loading = false; - },300) + },100) } // 预览产品id const previewByProductId = (id: string | number,prop={})=>{ @@ -49,7 +49,7 @@ const previewByProductId = (id: string | number,prop={})=>{ setTimeout(()=>{ designPropEditRef.value.previewByProductId(id,prop); that.loading = false; - },300) + },100) } // 预览草稿设计id const previewByDraftDesignId = (id: string | number,prop={})=>{ @@ -58,11 +58,11 @@ const previewByDraftDesignId = (id: string | number,prop={})=>{ setTimeout(()=>{ designPropEditRef.value.previewByDraftDesignId(config,prop); that.loading = false; - },300) + },100) } -const submit = ()=>{ - const res = designPropEditRef.value.getPropInfo() - console.log("@@",res) +const submit = async ()=>{ + const res = await designPropEditRef.value.getPropInfo() + emit("submit",res); updateVisible(false) } defineExpose({ diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue index 56f8a44..84ecb79 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue @@ -80,7 +80,45 @@ v-for="(tmp) in that.propOrderByList" :key="tmp.key" :label="getLabelName(that.propInfo[tmp.key])"> -
+
+
+
+ + + + + + + + + + +
+
+ + + 添加 + +
+ +
- + 添加
@@ -179,13 +218,15 @@
- +
- + 添加 @@ -199,13 +240,13 @@
- +
\ No newline at end of file + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/detials/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/detials/index.vue index 1f76003..1d9749b 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/detials/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/detials/index.vue @@ -162,15 +162,9 @@ const submitForm = async (detailsData) => { if (formType.value === 'create') { const resId = await DraftDesignDataApi.createDraftDesignData(data) message.success(t('common.createSuccess')) - if(copyData.value){ - console.log("resId",resId) - await router.push({path: '/base/oms/draftdesigndata/detials',query: { - id: resId - }}) - }else { - resetForm() - } - + await router.push({path: '/base/oms/draftdesigndata/detials',query: { + id: resId + }}) } else { await DraftDesignDataApi.updateDraftDesignData(data) message.success(t('common.updateSuccess')) diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/index.vue index 65691fd..7837a91 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/draftdesigndata/index.vue @@ -8,7 +8,7 @@ :model="queryParams" ref="queryFormRef" :inline="true" - label-width="68px" + label-width="120px" > - + > + + + @@ -110,7 +113,13 @@ - + + + - - - + + + + + -
- - 手动输入 +
+ + 手动输入 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 添加 + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
- - - - - - + + + +
+ 添加工艺 + 重置序号 + +
+ + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - -
- 添加 - -
- - - - - - - - - - - - - - - - - - - + +
+
- -
- - - - - - - - - - - - + - - - - - - + + + + + + + + + + + + +
diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/index.vue index 82867b1..19e53d0 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/index.vue @@ -36,13 +36,14 @@ />
- + + + + @@ -52,7 +53,8 @@ clearable class="!w-240px" > - + + @@ -126,10 +128,15 @@ - - + + + + - { const previewDraftDesign = (id) => { designPreviewDialogRef.value.previewByProductId(id) } +const that = reactive({ + productTypeOptions: [], +}) +const init = async () => { + ProductTypeApi.getProductTypePage({ + pageNo: 1, + pageSize: 100 + }).then(r => { + that.productTypeOptions = r.list.map(item => { + return { + label: item.label, + value: item.id + } + }) + }) +} /** 初始化 **/ onMounted(() => { - getList() + getList(); + init(); }) diff --git a/hangtag-ui/hangtag-ui-front/src/api/infra/file/index.ts b/hangtag-ui/hangtag-ui-front/src/api/infra/file/index.ts index 3335076..db8a011 100644 --- a/hangtag-ui/hangtag-ui-front/src/api/infra/file/index.ts +++ b/hangtag-ui/hangtag-ui-front/src/api/infra/file/index.ts @@ -49,7 +49,7 @@ export const updateFile = (data: any) => { * 获取资源的域名 */ export const getDomain = () => { - return new Promise((resolve, reject)=>{ + return new Promise((resolve)=>{ const domain= sessionStorage.getItem('_$domain$_') if(domain){ resolve(domain) diff --git a/hangtag-ui/hangtag-ui-front/src/api/oms/productinfo/index.ts b/hangtag-ui/hangtag-ui-front/src/api/oms/productinfo/index.ts index 6497f5f..6f6c8e6 100644 --- a/hangtag-ui/hangtag-ui-front/src/api/oms/productinfo/index.ts +++ b/hangtag-ui/hangtag-ui-front/src/api/oms/productinfo/index.ts @@ -10,9 +10,14 @@ export interface ProductInfoVO { enabled: boolean // 启用状态 remark: string // 备注 details: string // 详情介绍 - cover: string // 封面 + cover?: string // 封面 draftDesignList: string, // 设计稿列表 draftDesignDataId: string // 设计稿数据id + summary?: string + specSizeWidth: number | string + specSizeHeight: number | string + specSizeThk: number | string + specMaterial: string } // 产品资料 API diff --git a/hangtag-ui/hangtag-ui-front/src/api/oms/productprocess/index.ts b/hangtag-ui/hangtag-ui-front/src/api/oms/productprocess/index.ts new file mode 100644 index 0000000..ad9a3f5 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/api/oms/productprocess/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +// 产品工艺 VO +export interface ProductProcessVO { + id: number // id + name: string // 名称 + key: string // 临时key + remark: string // 说明 + step: number // 工序 + productInfoId: number // 产品id oms_product_info +} + +// 产品工艺 API +export const ProductProcessApi = { + // 查询产品工艺 分页 + getProductProcessPage: async (params: any) => { + return await request.get({ url: `/oms/product-process/page`, params }) + }, + + // 查询产品工艺 详情 + getProductProcess: async (id: number) => { + return await request.get({ url: `/oms/product-process/get?id=` + id }) + }, + + // 新增产品工艺 + createProductProcess: async (data: ProductProcessVO) => { + return await request.post({ url: `/oms/product-process/create`, data }) + }, + + // 修改产品工艺 + updateProductProcess: async (data: ProductProcessVO) => { + return await request.put({ url: `/oms/product-process/update`, data }) + }, + + // 删除产品工艺 + deleteProductProcess: async (id: number) => { + return await request.delete({ url: `/oms/product-process/delete?id=` + id }) + }, + + // 导出产品工艺 Excel + exportProductProcess: async (params) => { + return await request.download({ url: `/oms/product-process/export-excel`, params }) + }, +} diff --git a/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue index d9d1828..cf5d456 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/DraftDesignImageLibDialog/index.vue @@ -95,6 +95,7 @@ import {replaceDomain} from "@/utils"; import {ShapeType} from "@/components/DraftDesign/config"; import {Search} from "@element-plus/icons-vue"; import {createImageViewer} from "@/components/ImageViewer"; +import {convertImageToBase64} from "@/components/DraftDesign/utils/Dpi"; /** 稿件图片库 */ defineOptions({name: 'DraftDesignImageLibDialog'}) @@ -210,8 +211,13 @@ const updateVisible = (visible: boolean) => { defineExpose({}) // 提供 open 方法,用于打开弹窗 const submit = () => { - emit("update:modelValue", that.iconUrl) - updateVisible(false) + // 转成base64 + convertImageToBase64(that.iconUrl).then((res:string) => { + that.iconUrl = res; + emit("update:modelValue", that.iconUrl) + updateVisible(false) + }) + } const clearData = ()=>{ that.iconUrl = ''; diff --git a/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/DataForm.vue b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/DataForm.vue new file mode 100644 index 0000000..30434c8 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/DataForm.vue @@ -0,0 +1,69 @@ + + diff --git a/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/config.data.ts b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/config.data.ts new file mode 100644 index 0000000..03fe29a --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/config.data.ts @@ -0,0 +1,43 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const rules = reactive({ + code: [required], + name: [required], +}) + +// CrudSchema https://doc.iocoder.cn/vue3/crud-schema/ +const crudSchemas = reactive([ + { + label: 'id', + field: 'id', + isForm: false, + }, + { + label: '编码', + field: 'code', + isSearch: true, + }, + { + label: '名称', + field: 'name', + isSearch: true, + }, + { + label: '创建时间', + field: 'createTime', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + } +]) +export const { allSchemas } = useCrudSchemas(crudSchemas) diff --git a/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/index.vue b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/index.vue new file mode 100644 index 0000000..be83138 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/components/Dialog/src/ProductInfoListDialog/index.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPreviewDialog.vue b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPreviewDialog.vue index 1492e01..ce2d9d4 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPreviewDialog.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPreviewDialog.vue @@ -40,7 +40,7 @@ const preview = (config,prop={})=>{ setTimeout(()=>{ designPropEditRef.value.loadConfig(config,prop); that.loading = false; - },300) + },100) } // 预览产品id const previewByProductId = (id: string | number,prop={})=>{ @@ -49,7 +49,7 @@ const previewByProductId = (id: string | number,prop={})=>{ setTimeout(()=>{ designPropEditRef.value.previewByProductId(id,prop); that.loading = false; - },300) + },100) } // 预览草稿设计id const previewByDraftDesignId = (id: string | number,prop={})=>{ @@ -58,11 +58,11 @@ const previewByDraftDesignId = (id: string | number,prop={})=>{ setTimeout(()=>{ designPropEditRef.value.previewByDraftDesignId(config,prop); that.loading = false; - },300) + },100) } -const submit = ()=>{ - const res = designPropEditRef.value.getPropInfo() - console.log("@@",res) +const submit = async ()=>{ + const res = await designPropEditRef.value.getPropInfo() + emit("submit",res); updateVisible(false) } defineExpose({ diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue index 56f8a44..2196d1e 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue @@ -80,7 +80,45 @@ v-for="(tmp) in that.propOrderByList" :key="tmp.key" :label="getLabelName(that.propInfo[tmp.key])"> -
+
+
+
+ + + + + + + + + + +
+
+ + + 添加 + +
+ +
- + 添加
@@ -179,13 +218,15 @@
- +
- + 添加 @@ -199,13 +240,13 @@
- +
- - diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.eot b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.eot deleted file mode 100644 index df95967fe0668fda611dddf641b9ebe117558ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12020 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 diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.svg b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.svg deleted file mode 100644 index 5436661..0000000 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.ttf b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.ttf deleted file mode 100644 index 93ad7742a758b222a7e56c64dab4017a4f667239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11856 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 diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.woff b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/fonts/icomoon.woff deleted file mode 100644 index dbfb1773b2c0c59a9cfe377eed0a96e57ccebf59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11932 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 Ci8Js3 diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/icomoon.eot b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/icomoon.eot index 3f4b846e638d3596025753de680c2d0fd097def0..eeaa7743883a4a45795451419cfd7d43a502c60d 100644 GIT binary patch delta 54 zcmZ2dw4`W)4YU12+lltum|t4$-}oceMB4VDeLTO-R|akt1`v2GQ>_T2Hy4<0VFmy_ C&Jt+= delta 54 zcmZ2dw4`W)4RgEb@`?7_n71sLz41q^iS%;O_IQ4quMFHQ3?T5BNsk{!Z!R$1!VCZ{ Ca1l@d diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/icomoon.ttf b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/icomoon.ttf index 77af6d261be67ac7b55a9235e304ff61fe40a38c..4b0110913fa54722216e7e2525e855fcb29edd92 100644 GIT binary patch delta 47 ucmZoDY$%)%$o$f3|HhD56KUIr_VN5SUm3Vr7(n2$Otm76-h9Sn3o`(S&<_Ow delta 47 ucmZoDY$%)%$h>92?2RF@Ceq7A+vE9dzA|vLFo3{gCOv)_z4?sE7G?l_Kn?}~ diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/icomoon.woff b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/icomoon.woff index c4f0f89dbf633e8f7a5f416f93238704724d755a..ab0edf0c7b2b2d1f91fe32614f44ed361c627e86 100644 GIT binary patch delta 47 ucmX?8c&2bdFY`;Q{TnCbnn>F|w2$Yv`O3h}!T{g#iQ}GwJce=*<$QTbKc=I}URI diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/selection.json b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/selection.json deleted file mode 100644 index c0e47fa..0000000 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/selection.json +++ /dev/null @@ -1 +0,0 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M534.073 11.036l426.553 479.403c5.571 5.578 9.017 13.281 9.017 21.788s-3.445 16.21-9.017 21.789l0-0-426.553 479.346c-5.578 5.571-13.281 9.017-21.788 9.017s-16.21-3.445-21.789-9.017l0 0-426.553-479.346c-5.571-5.578-9.017-13.281-9.017-21.788s3.445-16.21 9.017-21.789l-0 0 426.553-479.403c5.578-5.571 13.281-9.017 21.788-9.017s16.21 3.445 21.789 9.017l-0-0zM527.815 126.919c-3.98-3.962-9.469-6.411-15.531-6.411s-11.55 2.449-15.531 6.412l0.001-0.001-325.291 369.778c-3.962 3.98-6.411 9.469-6.411 15.531s2.449 11.55 6.412 15.531l-0.001-0.001 325.291 370.005c3.983 3.979 9.484 6.44 15.559 6.44s11.576-2.461 15.559-6.44l-0 0 333.483-370.005c3.979-3.983 6.44-9.484 6.44-15.559s-2.461-11.576-6.44-15.559l0 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_lozenge"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":81,"id":57,"name":"lk_lozenge","prevSize":32,"code":59701},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M874.24 604.498c22.292-2.14 42.977-11.735 59.238-27.566v282.501c0 48.855-39.762 88.596-88.627 88.596h-634.982c-48.876 0-88.637-39.741-88.637-88.596l0-634.307c0-48.855 39.762-88.607 88.637-88.607h283.269c-15.247 15.647-25.385 36.291-27.607 59.228h-255.672c-16.21 0-29.399 13.179-29.399 29.379v634.296c0 16.189 13.189 29.368 29.399 29.368h634.982c16.21 0 29.399-13.179 29.399-29.368v-254.925zM890.153 130.447h-300.892c-24.535 0-44.421 19.886-44.421 44.431 0 24.535 19.886 44.421 44.421 44.421h191.212c-1.843 1.341-3.686 2.703-5.345 4.372l-313.457 313.436v-193.638c0-24.535-19.886-44.421-44.421-44.421-12.268 0-23.378 4.956-31.416 13.005-8.038 8.059-13.015 19.139-13.015 31.416v300.902c0 24.525 19.886 44.421 44.421 44.421h300.892c24.535 0 44.421-19.896 44.421-44.442 0-24.525-19.886-44.421-44.421-44.421h-191.191c1.843-1.341 3.676-2.703 5.335-4.362l313.436-313.446v193.649c0 24.535 19.886 44.421 44.421 44.421 12.268 0 23.378-4.956 31.416-13.005 8.038-8.059 13.015-19.149 13.015-31.416v-300.902c0.010-24.525-19.886-44.421-44.411-44.421z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_set_size"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":79,"id":56,"name":"lk_set_size","prevSize":32,"code":59699},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M589.523 416.828v-154.985l290.635 253.71-290.635 253.591v-154.744h-477.064v-197.572h477.064zM529.288 129.265v227.328h-477.064v318.042h477.064v227.087l442.488-386.108-442.488-386.35z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_right_arrow"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":80,"id":55,"name":"lk_right_arrow","prevSize":32,"code":59700},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M870.4 153.6l-691.2 691.2v-691.2h691.2zM746.829 204.8h-516.429v516.403l516.403-516.403z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_right_triangle"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":78,"id":54,"name":"lk_right_triangle","prevSize":32,"code":59698},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M512 768c233.92 0 416-121.408 416-256s-182.080-256-416-256-416 121.408-416 256c0 134.592 182.080 256 416 256zM512 832c-265.088 0-480-143.296-480-320s214.912-320 480-320c265.088 0 480 143.296 480 320s-214.912 320-480 320z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_ellipse"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":76,"id":53,"name":"lk_ellipse","prevSize":32,"code":59695},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M128 853.333h768c23.564-0 42.667-19.103 42.667-42.667v0-597.333c0-23.564-19.103-42.667-42.667-42.667v0h-768c-23.564 0-42.667 19.103-42.667 42.667v-0 597.333c0 23.564 19.103 42.667 42.667 42.667v0zM170.667 256h682.667v512h-682.667v-512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_rect"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":77,"id":52,"name":"lk_rect","prevSize":32,"code":59697},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M213.333 853.333c-17.067 0-29.867-4.267-42.667-8.533-29.867-12.8-55.467-38.4-68.267-68.267s-12.8-68.267 0-98.133c0 0 0-4.267 4.267-4.267l298.667-524.8c12.8-21.333 29.867-38.4 51.2-51.2 59.733-34.133 140.8-12.8 174.933 51.2l298.667 520.533s0 4.267 4.267 4.267c4.267 12.8 8.533 25.6 8.533 42.667 0 34.133-8.533 68.267-34.133 93.867-21.333 25.6-55.467 38.4-89.6 42.667h-605.867zM179.2 712.533c-4.267 8.533-4.267 21.333 0 29.867s12.8 17.067 21.333 21.333c4.267 4.267 8.533 4.267 12.8 4.267h597.333c8.533 0 21.333-4.267 25.6-12.8s12.8-21.333 12.8-29.867c0-4.267 0-8.533-4.267-12.8l-298.667-520.533c-8.533-21.333-34.133-29.867-55.467-17.067-8.533 4.267-12.8 8.533-17.067 17.067l-294.4 520.533z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_triangle"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":72,"id":50,"name":"lk_triangle","prevSize":32,"code":59692},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M231.867 924.56l99.624-315.316-254.598-217.71h320.431l114.726-293.374 128.642 293.375h306.415l-240.135 217.562 102.703 316.754-296.032-198.443-281.776 197.151zM513.135 687.827l238.918 159.045-81.227-247.13 196.016-176.485h-246.748l-106.382-242.59-94.867 242.59h-258.161l206.984 175.878-78.212 249.077 223.679-160.385z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_five_pointed"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":73,"id":49,"name":"lk_five_pointed","prevSize":32,"code":59694},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M512 981.312c-259.12-0.182-469.129-210.191-469.312-469.294l-0-0.018c0.182-259.12 210.191-469.129 469.294-469.312l0.018-0c259.12 0.182 469.129 210.191 469.312 469.294l0 0.018c-0.182 259.12-210.191 469.129-469.294 469.312l-0.018 0zM512 136.832c-1.457-0.020-3.177-0.032-4.9-0.032-207.2 0-375.168 167.968-375.168 375.168s167.968 375.168 375.168 375.168c1.723 0 3.443-0.012 5.161-0.035l-0.261 0.003c205.081-2.764 370.268-169.659 370.268-375.136s-165.187-372.372-370.007-375.133l-0.261-0.003z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_circle"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":75,"id":47,"name":"lk_circle","prevSize":32,"code":59696},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M858.496 680.32v-335.808c58.7-18.539 100.528-72.47 100.608-136.183l0-0.009c-0.073-78.687-63.841-142.455-142.521-142.528l-0.007-0c-64.448 0-119.040 43.008-136.576 101.888h-335.808c-18.205-59.311-72.415-101.717-136.556-101.888l-0.020-0c-78.687 0.073-142.455 63.841-142.528 142.521l-0 0.007c0.094 64.368 42.785 118.74 101.389 136.442l1.011 0.262v334.72c-59.555 18.038-102.17 72.421-102.208 136.764l-0 0.004c0 78.592 63.936 142.464 142.528 142.464 63.872 0 118.080-42.176 136.064-100.288h336.896c18.643 58.546 72.51 100.224 136.12 100.288l0.008 0c78.664-0.073 142.419-63.805 142.528-142.454l0-0.010c-0.212-63.771-42.142-117.692-99.915-135.916l-1.013-0.276zM816.576 125.824c45.504 0 82.56 36.992 82.56 82.496-1.795 44.176-38.042 79.31-82.496 79.31s-80.701-35.133-82.491-79.148l-0.005-0.162c0-45.504 37.056-82.56 82.432-82.56zM125.12 208.32c0-45.504 36.992-82.56 82.496-82.56 44.176 1.795 79.31 38.042 79.31 82.496s-35.133 80.701-79.148 82.491l-0.162 0.005c0 0-0 0-0 0-45.552 0-82.487-36.89-82.56-82.425l-0-0.007zM207.808 899.008c-45.597 0-82.56-36.963-82.56-82.56v0c1.795-44.176 38.042-79.31 82.496-79.31s80.701 35.133 82.491 79.148l0.005 0.162c0 45.568-37.056 82.56-82.432 82.56zM675.392 798.72h-326.272c-8.383-63.923-58.022-114.106-120.959-123.236l-0.769-0.092v-325.952c63.034-9.254 112.227-58.577 121.19-120.898l0.090-0.766h326.72c9.109 63.695 59.165 113.382 122.276 121.84l0.732 0.080v325.568c-64 8.32-114.88 59.328-123.008 123.52zM816.832 899.008c-45.597 0-82.56-36.963-82.56-82.56v0c1.795-44.176 38.042-79.31 82.496-79.31s80.701 35.133 82.491 79.148l0.005 0.162c0 45.568-36.992 82.56-82.496 82.56z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_angular"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":71,"id":45,"name":"lk_angular","prevSize":32,"code":59691},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M554.667 384c0.002 0 0.004 0 0.007 0 23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667c-0.002 0-0.005 0-0.007 0l0-0c-23.561 0.004-42.66 19.105-42.66 42.667s19.099 42.663 42.66 42.667l0 0zM554.667 554.667c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667h-0c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667h-0zM725.333 554.667c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667h-0c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667h-0zM554.667 725.333c0.002 0 0.004 0 0.007 0 23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667c-0.002 0-0.005 0-0.007 0l0-0c-23.561 0.004-42.66 19.105-42.66 42.667s19.099 42.663 42.66 42.667l0 0zM896 128h-682.667c-23.564-0-42.667 19.103-42.667 42.667v682.667c0 23.564 19.103 42.667 42.667 42.667h682.667c23.564 0 42.667-19.103 42.667-42.667v0-682.667c0-23.564-19.103-42.667-42.667-42.667v0zM853.333 810.667h-597.333v-597.333h597.333v597.333zM384 554.667c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667h-0c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667h-0z"],"attrs":[{}],"width":1066,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_shape_stroke"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":70,"id":44,"name":"lk_shape_stroke","prevSize":32,"code":59690},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M954.757 291.473c-3.61-3.685-8.041-5.583-13.168-5.641-12.515-0.141-26.509 10.942-36.036 20.255l-340.912 331.177c-12.501 12.229-58.516 86.966-60.468 90.143l-7.452 12.121 12.135-7.428c3.217-1.968 78.963-48.374 91.438-60.569l340.911-331.178c15.151-14.815 26.671-35.436 13.552-48.879v0zM741.987 394.478c0 27.609-22.407 50.015-50.015 50.015-27.613 0-50.021-22.406-50.021-50.015 0-27.61 22.408-50.018 50.021-50.018 27.608 0 50.015 22.408 50.015 50.018v0zM216.812 569.531c-27.61 0-50.016-22.403-50.016-50.012 0-27.612 22.406-50.020 50.016-50.020 27.608 0 50.017 22.408 50.017 50.020 0 27.609-22.409 50.012-50.017 50.012v0zM291.838 394.478c0-27.61 22.408-50.018 50.015-50.018 27.61 0 50.018 22.408 50.018 50.018 0 27.609-22.407 50.015-50.018 50.015-27.609-0-50.015-22.382-50.015-50.015v0zM466.896 344.46c0-27.609 22.406-50.015 50.015-50.015 27.612 0 50.019 22.406 50.019 50.015s-22.408 50.018-50.019 50.018c-27.609 0-50.015-22.385-50.015-50.018v0zM853.74 514.084c-22.989 148.967-158.732 299.942-351.947 299.942-36.782 0-75.999-7.275-107.598-19.959-33.607-13.49-48.851-29.354-51.907-39.693-1.594-5.398-3.092-11.296-4.68-17.542-4.65-18.302-9.922-39.045-20.252-56.259-18.376-30.618-44.815-37.045-63.76-37.045-7.166 0-14.798 0.914-22.675 2.712-12.865 2.936-25.363 4.424-37.141 4.424-25.123 0-67.464-6.665-68.765-51.308-6.59-227.942 180.734-351.748 369.298-373.326 13.337-1.525 27.603-2.296 42.403-2.296 53.124 0 111.543 10.001 152.463 26.099 9.248 3.638 14.375 6.016 39.204 18.184 25.653 12.57 46.348 30.432 62.898 47.642l30.158-53.075c-18.027-17.013-40.334-34.407-67.102-47.525-24.89-12.197-31.893-15.514-43.565-20.106-47.339-18.623-114.033-30.194-174.053-30.194-17.027 0-33.545 0.901-49.102 2.678-115.514 13.22-220.687 59.057-296.143 129.075-85.507 79.342-128.872 184.654-125.405 304.555 1.005 34.47 15.117 63.017 40.81 82.556 22.381 17.020 52.431 26.014 86.903 26.014 16.187 0 33.097-1.985 50.268-5.903 3.582-0.818 6.794-1.232 9.548-1.232 11.469 0 16.99 10.044 26.853 48.854 1.654 6.509 3.365 13.241 5.281 19.73 9.434 31.912 39.343 58.784 86.495 77.711 38.319 15.382 85.544 24.203 129.567 24.203 54.104 0 106.474-10.135 155.659-30.123 46.241-18.793 88.502-45.763 125.607-80.165 35.744-33.141 65.271-71.791 87.757-114.884 22.526-43.163 36.888-88.666 42.691-135.269 0.262-2.117 0.509-4.321 0.732-6.548l0.148-1.469v-0.057c0.222-2.336 0.404-4.695 0.571-7.065l-61.218 16.661z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_color_palette"],"colorPermutations":{"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":69,"id":43,"name":"lk_color_palette","prevSize":32,"code":59693},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M809.664 435.2v-0.192h-72.32v0.192l-64.448 177.024 36.16 99.392 64.448-176.96 72.192 198.4h-128.832l23.68 64.96h128.832l44.608 122.432c2.292 6.209 8.158 10.557 15.040 10.56l49.728 0c4.408-0.014 7.976-3.59 7.976-8 0-0.988-0.179-1.934-0.506-2.807l0.018 0.055-176.576-485.056zM427.776 75.776h-87.552c-0.008-0-0.017-0-0.026-0-1.163 0-2.154 0.739-2.528 1.773l-0.006 0.019-309.184 849.792c-0.112 0.285-0.177 0.615-0.177 0.96 0 1.485 1.203 2.688 2.688 2.688 0.017 0 0.035-0 0.052-0l-0.003 0h74.304c6.857-0.031 12.692-4.371 14.94-10.449l0.036-0.111 79.36-217.984h368.64l79.36 217.984c2.292 6.209 8.158 10.557 15.040 10.56l74.304 0c0.015 0 0.032 0 0.049 0 1.485 0 2.688-1.203 2.688-2.688 0-0.345-0.065-0.675-0.184-0.979l0.006 0.018-309.312-849.792c-0.38-1.053-1.371-1.792-2.534-1.792-0.009 0-0.018 0-0.027 0l0.001-0zM228.736 622.528l155.264-426.56 155.2 426.56h-310.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_size"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":67,"id":41,"name":"lk_font_size","prevSize":32,"code":59689},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M128 896h768v64h-768zM128 768h768v64h-768zM128 640h768v64h-768zM128 512h768v64h-768zM0 64h64v896h-64zM960 64h64v896h-64z","M440.2 448l-128-128h399.6l-128 128h184.2l192-192-192-192h-184.2l128 128h-399.6l128-128h-184.2l-192 192 192 192z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_icon"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":66,"id":40,"name":"lk_align_icon","prevSize":32,"code":59688},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M960 480v64h-896v-64h896zM832 256v512l-256 0v-512l256 0zM448 128v768l-256 0v-768l256 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_h_center"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":64,"id":39,"name":"lk_align_h_center","prevSize":32,"code":59685},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M1170.286 987.429c0-20.198-16.374-36.571-36.571-36.571h-1097.143c-20.195 0.003-36.565 16.376-36.565 36.571s16.37 36.568 36.565 36.571l1097.143 0c20.198-0 36.571-16.374 36.571-36.571v0zM950.857 841.143v-512c0-20.198-16.374-36.571-36.571-36.571v0h-219.429c-20.198 0-36.571 16.374-36.571 36.571l-0-0v512c0 20.198 16.374 36.571 36.571 36.571h219.429c20.198 0 36.571-16.374 36.571-36.571v0zM512 841.143v-804.571c0-20.198-16.374-36.571-36.571-36.571v0h-219.429c-20.198 0-36.571 16.374-36.571 36.571v0 804.571c0 20.198 16.374 36.571 36.571 36.571v0h219.429c20.198-0 36.571-16.374 36.571-36.571v0z"],"attrs":[{}],"width":1170,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_bottom"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":63,"id":38,"name":"lk_align_bottom","prevSize":32,"code":59686},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M1170.286 36.571c0 20.198-16.374 36.571-36.571 36.571l-1097.143-0c-20.195-0.003-36.565-16.376-36.565-36.571s16.37-36.568 36.565-36.571l1097.143-0c20.198-0 36.571 16.374 36.571 36.571v0zM950.857 182.857v512c0 20.198-16.374 36.571-36.571 36.571v0h-219.429c-20.198 0-36.571-16.374-36.571-36.571l-0 0v-512c0-20.198 16.374-36.571 36.571-36.571l-0-0h219.429c20.198 0 36.571 16.374 36.571 36.571v-0zM512 182.857v804.571c0 20.198-16.374 36.571-36.571 36.571v0h-219.429c-20.198 0-36.571-16.374-36.571-36.571v0-804.571c0-20.198 16.374-36.571 36.571-36.571v-0h219.429c20.198 0 36.571 16.374 36.571 36.571v-0z"],"attrs":[{}],"width":1170,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_top"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":62,"id":37,"name":"lk_align_top","prevSize":32,"code":59687},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M928 0c17.673 0 32 14.327 32 32v0 960c0 17.673-14.327 32-32 32s-32-14.327-32-32v0-960c0-17.673 14.327-32 32-32v0zM352 192h448c17.673 0 32 14.327 32 32v0 192c0 17.673-14.327 32-32 32v0h-448c-17.673 0-32-14.327-32-32v0-192c0-17.673 14.327-32 32-32v0zM96 576h704c17.673 0 32 14.327 32 32v0 192c0 17.673-14.327 32-32 32v0h-704c-17.673 0-32-14.327-32-32v0-192c0-17.673 14.327-32 32-32v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_right"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":59,"id":36,"name":"lk_align_right","prevSize":32,"code":59682},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M477.312 576v-128h-210.624c-17.673 0-32-14.327-32-32v0-192c0-17.673 14.327-32 32-32v0h210.624v-157.312c0-19.158 15.53-34.688 34.688-34.688s34.688 15.53 34.688 34.688v-0 157.312h210.624c17.673 0 32 14.327 32 32v0 192c0 17.673-14.327 32-32 32v0h-210.624v128h349.312c17.673 0 32 14.327 32 32v0 192c0 17.673-14.327 32-32 32v0h-349.312v157.312c0 19.158-15.53 34.688-34.688 34.688s-34.688-15.53-34.688-34.688v-157.312h-349.312c-17.673 0-32-14.327-32-32v0-192c0-17.673 14.327-32 32-32v0h349.312z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_center"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":60,"id":35,"name":"lk_align_center","prevSize":32,"code":59683},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M96 0c17.673 0 32 14.327 32 32v0 960c0 17.673-14.327 32-32 32s-32-14.327-32-32v0-960c0-17.673 14.327-32 32-32v0zM224 192h448c17.673 0 32 14.327 32 32v0 192c0 17.673-14.327 32-32 32v0h-448c-17.673 0-32-14.327-32-32v0-192c0-17.673 14.327-32 32-32v0zM224 576h704c17.673 0 32 14.327 32 32v0 192c0 17.673-14.327 32-32 32v0h-704c-17.673 0-32-14.327-32-32v0-192c0-17.673 14.327-32 32-32v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_left"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":61,"id":34,"name":"lk_align_left","prevSize":32,"code":59684},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M458.5 177.3v273h-288.2v-273h288.2zM499.5 136.3h-370.3v355h370.2v-355h0.1zM305.7 621.5l137.1 237.4h-274.1l137-237.4zM305.7 539.5l-208 360.5h416.2l-208.2-360.5zM732.7 216.8l23.1 46.8 9.5 19.3 73 10.6-37.3 36.4-15.4 15.1 3.6 21.2 8.8 51.4-65.3-34.3-19.1 10-46.2 24.3 8.8-51.4 3.6-21.3-15.4-15.1-37.3-36.4 72.8-10.6 9.5-19.3 23.3-46.7zM732.7 124.1l-59.9 121.3-133.8 19.4 96.8 94.4-22.8 133.3 119.7-62.9 119.7 62.9-22.9-133.3 96.8-94.4-133.8-19.4-59.8-121.3zM732.7 595.8c72.5 0 131.5 59 131.5 131.5s-59 131.5-131.5 131.5-131.6-59-131.6-131.5 59-131.5 131.6-131.5zM732.7 554.8c-95.3 0-172.6 77.2-172.6 172.5s77.3 172.6 172.6 172.6 172.5-77.2 172.5-172.6c0-95.3-77.3-172.5-172.5-172.5z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_shape_set"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":57,"id":33,"name":"lk_shape_set","prevSize":32,"code":59681},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M938.633 570.216l-383.961 172.585c-36.762 15.99-51.4 15.99-85.33 0l-383.976-172.585c-20.383-10.827-25.879-50.887-25.879-72.746 25.631 14.637 61.674 30.959 60.335 30.131l392.179 180.788 392.192-180.788c0.662-0.166 35.629-17.786 60.32-30.131 0 22.369-6.933 63.908-25.879 72.746zM938.633 389.413l-383.961 172.599c-36.762 15.991-51.4 15.991-85.33 0l-383.976-172.599c-30.16-16.005-29.222-66.407 0-85.229l383.976-202.73c33.93-16.944 55.155-17.882 85.33 0l383.961 202.73c29.221 16.005 28.255 72.042 0 85.229zM511.999 135.865l-392.179 210.933 392.179 165.253 392.193-165.253-392.193-210.933zM511.999 889.203l392.192-180.815c0.662-0.166 35.629-17.786 60.32-30.13 0 22.369-6.932 63.908-25.879 72.746l-383.96 172.612c-36.762 15.99-51.4 15.99-85.33 0l-383.976-172.613c-20.383-10.827-25.879-50.873-25.879-72.746 25.631 14.637 61.674 30.959 60.335 30.13l392.178 180.816z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_layer_set"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":56,"id":32,"name":"lk_layer_set","prevSize":32,"code":59680},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M340.821 0c-188.192 0.097-340.724 152.63-340.821 340.812l-0 0.009v683.179h341.504v-682.667h682.496v-341.333h-683.179z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_border_angle"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":55,"id":31,"name":"lk_border_angle","prevSize":32,"code":59679},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M1024.003 83.149l-940.851 940.851-83.149-83.149 940.851-940.851 83.149 83.149zM1024.003 83.149z"],"attrs":[{}],"width":1025,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_line"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":54,"id":30,"name":"lk_line","prevSize":32,"code":59678},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M724.038 298.855h-424.077c-4.962 0-8.987 4.026-8.987 8.987v141.376c0 2.434 0.986 4.763 2.732 6.458 1.746 1.689 4.109 2.56 6.54 2.526l18.751-0.59c4.423-0.143 8.081-3.479 8.634-7.871 5.911-47.374 45.467-80.044 65.949-85.028 6.049-1.48 14.476-2.224 25.053-2.224 12.941 0 26.145 1.147 34.21 2.004-0.091 50.063-0.581 317.876-0.581 336.347 0 11.676-16.415 18.719-20.795 20.388l-36.029 0.57c-4.828 0.082-8.732 3.953-8.845 8.78l-0.59 25.817c-0.056 2.418 0.867 4.758 2.555 6.484 1.691 1.737 4.010 2.712 6.428 2.712h234.059c4.962 0 8.988-4.028 8.988-8.988v-25.187c0-4.963-4.027-8.988-8.988-8.988h-42.369c-10.383-1.199-19.057-13.291-22.532-19.6l0.513-341.292c4.22-0.375 10.123-0.737 17.359-0.737 14.281 0 28.964 1.346 43.645 3.996 30.609 5.527 61.849 66.544 71.302 89.584 1.385 3.376 4.669 5.583 8.321 5.583h18.751c4.962 0 8.987-4.027 8.987-8.989l-0-143.128c0.004-4.966-4.023-8.991-8.984-8.991v0zM724.038 298.855z","M847.029 65.29h-670.063c-61.677 0-111.675 50.004-111.675 111.675v687.47c8.415 53.352 55.962 94.274 111.675 94.274h670.068c61.676 0 111.675-50.004 111.675-111.676l-0-670.068c-0.001-61.668-50-111.675-111.681-111.675v0zM847.033 791.194c0 30.843-24.998 55.84-55.84 55.84l-558.387-0.004c-30.838 0-55.84-24.999-55.84-55.84v0-558.383c0-30.838 24.998-55.841 55.84-55.841h558.387c30.838 0 55.84 24.998 55.84 55.841v0 558.387zM847.033 791.194z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_text"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":53,"id":29,"name":"lk_text","prevSize":32,"code":59677},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M460.8 665.6h102.4v102.4h-102.4v-102.4zM460.8 256h102.4v307.2h-102.4v-307.2zM511.488 0c-282.624 0-511.488 229.376-511.488 512s228.864 512 511.488 512c283.136 0 512.512-229.376 512.512-512s-229.376-512-512.512-512zM512 921.6c-226.304 0-409.6-183.296-409.6-409.6s183.296-409.6 409.6-409.6 409.6 183.296 409.6 409.6-183.296 409.6-409.6 409.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_warning_tips"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":52,"id":28,"name":"lk_warning_tips","prevSize":32,"code":59676},"setIdx":0,"setId":2,"iconIdx":25},{"icon":{"paths":["M379.611 265.874c16.238 16.311 43.081 16.311 59.392 0l31.451-31.451v190.757c0 23.113 18.944 42.057 42.057 42.057 23.179-0.083 41.943-18.872 41.984-42.053l0-0.004v-190.903l31.451 31.525c16.311 16.311 43.154 16.311 59.465 0 7.55-7.622 12.215-18.114 12.215-29.696s-4.665-22.074-12.219-29.699l0.003 0.003-103.205-103.131c-7.622-7.55-18.114-12.215-29.696-12.215s-22.074 4.665-29.699 12.219l0.003-0.003-103.205 103.205c-7.603 7.599-12.306 18.098-12.306 29.696s4.703 22.098 12.305 29.696l0 0z","M897.17 149.943h-240.274l48.64 48.64h184.832v477.038h-755.931v-477.038h183.954l48.64-48.567h-239.177c-26.925 0.083-48.735 21.867-48.859 48.774l-0 0.012v541.477c0 26.843 21.943 48.859 48.786 48.859h256.805v72.85l-55.003 55.003s-5.998 11.995 8.997 11.995h347.794c14.994 0 8.997-11.995 8.997-11.995l-55.003-55.003v-72.85h256.805c26.951-0.083 48.777-21.909 48.859-48.851l0-0.008v-541.477c-0.124-26.919-21.934-48.704-48.851-48.786l-0.008-0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_data_output"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":48,"id":27,"name":"lk_data_output","prevSize":32,"code":59673},"setIdx":0,"setId":2,"iconIdx":26},{"icon":{"paths":["M379.6 292.3c-16.3 16.3-16.3 43.1 0 59.4l103.2 103.2c16.3 16.3 43.1 16.3 59.4 0l103.2-103.2c16.3-16.3 16.3-43.1 0-59.4s-43.1-16.3-59.4 0l-31.5 31.5v-190.8c0-23.1-18.9-42-42-42s-42 18.9-42 42v190.8l-31.5-31.5c-16.4-16.3-43.1-16.3-59.4 0zM897.2 150h-293.2v48.6h286.5v477h-756v-477h286.5v-48.6h-293.2c-26.8 0-48.8 22-48.8 48.8v541.5c0 26.8 22 48.8 48.8 48.8h256.8v72.9l-55 55s-6 12 9 12h347.8c15 0 9-12 9-12l-55-55v-72.9h256.8c26.8 0 48.8-22 48.8-48.8v-541.5c0-26.8-22-48.8-48.8-48.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_data_input"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":49,"id":26,"name":"lk_data_input","prevSize":32,"code":59674},"setIdx":0,"setId":2,"iconIdx":27},{"icon":{"paths":["M924.059 466.805c-1.883-38.202-23.717-72.597-57.491-90.555l-607.086-325.411c-33.877-18.193-74.843-17.13-107.73 2.797-33.222 19.646-53.366 55.597-52.778 94.19l4.364 729.352c-0.059 40.136 22.209 76.97 57.772 95.579 14.543 8.045 31.886 12.78 50.334 12.78 0.198 0 0.396-0.001 0.594-0.002l-0.030 0c22.852-0.093 44.045-7.12 61.604-19.084l-0.382 0.246 602.849-404.131c31.703-21.278 49.913-57.631 47.979-95.763zM177.079 926.452l1.346-832.289 692.623 371.223-693.969 461.066zM227.96 846.724z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_start"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":50,"id":25,"name":"lk_start","prevSize":32,"code":59675},"setIdx":0,"setId":2,"iconIdx":28},{"icon":{"paths":["M562.176 411.136c0 13.824 11.264 25.088 25.088 25.088s25.088-11.264 25.088-25.088-11.264-25.088-25.088-25.088-25.088 11.264-25.088 25.088zM335.872 235.52c-13.824 0-25.088 11.264-25.088 25.088s11.264 25.088 25.088 25.088 25.088-11.264 25.088-25.088c0.512-13.824-10.752-25.088-25.088-25.088zM436.224 587.776c13.824 0 25.6-11.264 25.6-25.088s-11.264-25.6-25.088-25.6-25.6 11.264-25.6 25.088 11.264 25.088 25.088 25.6zM839.168 82.944h-654.336c-41.472 0-75.264 33.792-75.776 75.264v707.584c0 41.472 33.792 75.264 75.776 75.264h527.872v-176.128c0-13.824 11.264-25.088 25.088-25.088h176.128v-581.632c0-41.472-33.28-75.264-74.752-75.264zM486.912 840.704h-201.216c-13.824 0-25.088-11.264-25.088-25.088s11.264-25.088 25.088-25.088h201.216c13.824 0 25.088 11.264 25.088 25.088s-11.264 25.088-25.088 25.088zM260.608 714.752c0-13.824 11.264-25.088 25.088-25.088h100.864c13.824 1.024 24.064 13.312 23.040 27.136-1.024 12.288-10.752 22.016-23.040 23.040h-100.864c-13.824 0.512-25.088-10.752-25.088-25.088zM360.96 537.088h4.608c13.824-38.912 56.32-59.904 95.744-46.080 21.504 7.68 38.4 24.576 46.080 46.080h169.984l-7.168-7.168c-9.728-9.728-9.728-25.6 0-35.84 9.728-9.728 25.6-9.728 35.84 0l50.176 49.664c9.728 9.728 9.728 25.6 0 35.84l-50.176 50.688c-9.728 9.728-25.6 9.728-35.84 0s-9.728-25.6 0-35.84l7.168-7.168h-169.984c-13.824 38.912-56.32 59.904-95.744 46.080-21.504-7.68-38.4-24.576-46.080-46.080h-4.608c-55.808 0-100.864-45.056-100.864-100.864s45.056-100.864 100.864-100.864h155.648c13.312-38.912 56.32-59.904 95.232-46.592 22.016 7.68 38.912 24.576 46.592 46.592h4.608c27.648 1.536 51.712-19.456 53.248-47.616 1.536-27.648-19.456-51.712-47.616-53.248h-261.632c-13.824 39.424-56.832 59.904-96.256 46.080s-59.904-56.832-46.080-96.256c13.824-39.424 56.832-59.904 96.256-46.080 21.504 7.68 38.4 24.576 46.080 46.080h256c55.296-2.048 102.4 40.96 104.448 96.768 2.048 55.296-40.96 102.4-96.768 104.448h-12.8c-13.312 38.912-56.32 59.904-95.232 46.592-22.016-7.68-38.912-24.576-46.592-46.592h-155.648c-27.648-1.536-51.712 19.456-53.248 47.616-1.536 27.648 19.456 51.712 47.616 53.248 2.56 0.512 4.608 0.512 6.144 0.512zM763.392 926.72l136.192-136.192h-136.192v136.192z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_step_flow"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":47,"id":24,"name":"lk_step_flow","prevSize":32,"code":59672},"setIdx":0,"setId":2,"iconIdx":29},{"icon":{"paths":["M512 74.667c-241.067 0-437.333 196.267-437.333 437.333s196.267 437.333 437.333 437.333 437.333-196.267 437.333-437.333-196.267-437.333-437.333-437.333zM512 885.333c-204.8 0-373.333-168.533-373.333-373.333s168.533-373.333 373.333-373.333 373.333 168.533 373.333 373.333-168.533 373.333-373.333 373.333z","M701.867 381.867l-253.867 256-125.867-125.867c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8l149.333 149.333c6.4 6.4 14.933 8.533 23.467 8.533s17.067-2.133 23.467-8.533l277.333-277.333c12.8-12.8 12.8-32 0-44.8-14.933-12.8-36.267-12.8-49.067-2.133z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_success"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":44,"id":23,"name":"lk_success","prevSize":32,"code":59669},"setIdx":0,"setId":2,"iconIdx":30},{"icon":{"paths":["M924.78 336.8c-69.897-162.92-228.929-274.96-414.13-274.96-248.169 0-449.35 201.181-449.35 449.35s201.181 449.35 449.35 449.35c248.169 0 449.35-201.181 449.35-449.35l-0 0c0-0.187 0-0.408 0-0.628 0-62.754-12.953-122.482-36.332-176.657l1.112 2.895zM875.050 664.55c-61.511 143.353-201.448 241.935-364.41 241.935-218.379 0-395.41-177.031-395.41-395.41s177.031-395.41 395.41-395.41c218.379 0 395.41 177.031 395.41 395.41 0 0.040-0 0.081-0 0.121l0-0.006c0 0.128 0 0.28 0 0.431 0 55.23-11.401 107.798-31.979 155.477l0.979-2.548z","M671.090 352.91c-4.886-4.885-11.635-7.906-19.090-7.906s-14.204 3.021-19.090 7.906l-120.91 120.91-120.91-120.91c-4.858-4.727-11.499-7.642-18.822-7.642-14.912 0-27 12.088-27 27 0 7.323 2.915 13.964 7.648 18.828l-0.006-0.006 120.91 120.91-120.91 120.91c-5.047 4.911-8.178 11.769-8.178 19.358 0 14.912 12.088 27 27 27 7.589 0 14.447-3.131 19.352-8.172l0.006-0.006 120.91-120.91 120.91 120.91c4.858 4.727 11.499 7.642 18.822 7.642 14.912 0 27-12.088 27-27 0-7.323-2.915-13.964-7.648-18.828l0.006 0.006-120.91-120.91 120.91-120.91c4.885-4.886 7.906-11.635 7.906-19.090s-3.021-14.204-7.906-19.090l0 0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_failed"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":45,"id":22,"name":"lk_failed","prevSize":32,"code":59670},"setIdx":0,"setId":2,"iconIdx":31},{"icon":{"paths":["M166.671 504.169c2.086-92.486 40.292-175.66 101.011-236.299l0.004-0.004c62.232-62.512 148.354-101.196 243.511-101.196 0.261 0 0.522 0 0.783 0.001l-0.041-0c0.253-0.001 0.553-0.001 0.852-0.001 95.047 0 181.058 38.689 243.143 101.178l0.018 0.018c9.939 9.939 19.275 20.48 27.889 31.503l-60.416 47.164c-1.912 1.491-3.13 3.794-3.13 6.382 0 0.598 0.065 1.181 0.189 1.743l-0.010-0.053c0.674 3.011 2.973 5.351 5.908 6.072l0.055 0.011 176.369 43.189c0.561 0.139 1.206 0.219 1.869 0.219 4.408 0 7.99-3.533 8.070-7.922l0-0.007 0.843-181.609c0-0.005 0-0.011 0-0.017 0-4.425-3.587-8.011-8.011-8.011-1.871 0-3.593 0.642-4.956 1.717l0.017-0.013-56.621 44.273c-77.878-98.981-197.664-161.961-332.159-161.961-229.909 0-416.835 184.035-421.498 412.828l-0.007 0.435c-0.001 0.054-0.002 0.117-0.002 0.181 0 4.425 3.587 8.011 8.011 8.011 0.001 0 0.001-0 0.002-0l60.235 0c0.019 0 0.040 0 0.062 0 4.361 0 7.908-3.485 8.009-7.821l0-0.009zM925.636 512h-60.235c-0.019-0-0.040-0-0.062-0-4.361 0-7.908 3.485-8.009 7.821l-0 0.009c-1.945 92.511-40.185 175.728-101.003 236.291l-0.012 0.012c-62.259 62.513-148.405 101.196-243.586 101.196-0.214 0-0.427-0-0.641-0.001l0.033 0c-0.238 0.001-0.52 0.001-0.802 0.001-109.934 0-207.811-51.622-270.713-131.947l-0.567-0.752 60.416-47.164c1.919-1.479 3.143-3.778 3.143-6.362 0-3.766-2.598-6.924-6.1-7.782l-0.055-0.011-176.369-43.189c-0.561-0.139-1.206-0.219-1.869-0.219-4.408 0-7.99 3.533-8.070 7.922l-0 0.007-0.723 181.73c0 6.746 7.77 10.541 12.951 6.325l56.621-44.273c77.865 99.043 197.68 162.070 332.215 162.070 229.957 0 416.905-184.138 421.442-413.008l0.007-0.424c0.003-0.086 0.005-0.187 0.005-0.289 0-3.307-2.019-6.143-4.892-7.341l-0.053-0.019c-0.901-0.381-1.949-0.602-3.048-0.602-0.009 0-0.017 0-0.026 0l0.001-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_running"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":46,"id":21,"name":"lk_running","prevSize":32,"code":59671},"setIdx":0,"setId":2,"iconIdx":32},{"icon":{"paths":["M146.286 914.286h-73.143v-804.571h73.143zM950.857 329.143h-731.429v-219.429h731.429zM804.571 621.714h-585.143v-219.429h585.143zM950.857 914.322h-731.429v-219.429h731.429z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_horizontal"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":23,"id":20,"name":"lk_align_horizontal","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":33},{"icon":{"paths":["M914.286 877.714v73.143h-804.571v-73.143zM329.143 73.143v731.429h-219.429v-731.429zM621.714 219.429v585.509h-219.429v-585.509zM914.286 73.143v731.429h-219.429v-731.429z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_vertical"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":24,"id":19,"name":"lk_align_vertical","prevSize":32,"code":59649},"setIdx":0,"setId":2,"iconIdx":34},{"icon":{"paths":["M563.8 512l262.5-312.9c4.4-5.2 0.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7l-216.5 258.1-216.5-258.1c-3-3.6-7.5-5.7-12.3-5.7h-79.8c-6.8 0-10.5 7.9-6.1 13.1l262.5 312.9-262.5 312.9c-4.4 5.2-0.7 13.1 6.1 13.1h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1l-262.5-312.9z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_close_x"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":25,"id":18,"name":"lk_close_x","prevSize":32,"code":59650},"setIdx":0,"setId":2,"iconIdx":35},{"icon":{"paths":["M994.763 91.741l-62.057-62.057c-18.325-18.314-43.634-29.64-71.589-29.64s-53.264 11.326-71.59 29.641l-144.073 144.073-69.542-69.67-137.804 137.868 57.386 57.322-393.26 393.324c-24.361 24.322-40.077 57.297-42.143 93.921l-0.017 0.379-22.903 22.839c-22.723 22.715-36.778 54.099-36.778 88.767 0 69.319 56.194 125.512 125.512 125.512 34.651 0 66.023-14.042 88.735-36.746l-0 0 22.903-22.967c37.012-1.982 70.012-17.695 94.295-42.091l0.005-0.005 393.26-393.26 57.386 57.322 137.74-137.676-69.606-69.67 144.074-143.946c18.367-18.324 29.731-43.662 29.731-71.653s-11.363-53.329-29.729-71.651l-0.002-0.002zM268.188 858.557c-9.913 9.927-23.615 16.068-38.752 16.068-8.713 0-16.951-2.035-24.264-5.655l0.32 0.143-54.507 54.444c-6.338 5.969-14.901 9.638-24.321 9.638-19.61 0-35.507-15.897-35.507-35.507 0-9.404 3.656-17.954 9.624-24.307l-0.017 0.019 54.38-54.571c-3.464-6.982-5.491-15.205-5.491-23.902 0-15.158 6.158-28.878 16.11-38.793l0.002-0.002 393.26-393.26 102.361 102.489-393.196 393.196z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_color_eyedropper_tool"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":26,"id":17,"name":"lk_color_eyedropper_tool","prevSize":32,"code":59651},"setIdx":0,"setId":2,"iconIdx":36},{"icon":{"paths":["M877.158 639.386s-70.246 97.28-70.246 137.421c0 40.141 31.539 72.499 70.451 72.499s70.246-32.563 70.246-72.704c-0.205-39.731-70.451-137.216-70.451-137.216zM852.378 536.166l-352.87-364.339c-0.819-0.819-1.638-1.638-2.662-2.458l-105.472-108.954c-12.083-12.288-31.539-12.288-43.418 0-12.083 12.288-12.083 32.563 0 44.851l79.053 81.51-338.534 349.389c-15.974 16.589-15.974 43.213 0 59.802l353.075 364.544c7.987 8.192 18.432 12.288 28.877 12.288s20.89-4.096 28.877-12.288l353.075-364.544c15.974-16.384 15.974-43.213 0-59.802zM587.776 353.075l165.478 170.598h-565.658l282.624-291.84 117.555 121.242z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_color_fill"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":27,"id":16,"name":"lk_color_fill","prevSize":32,"code":59652},"setIdx":0,"setId":2,"iconIdx":37},{"icon":{"paths":["M792.832 485.856c-12.512-12.544-32.8-12.48-45.248-0.032l-203.584 203.168v-560.992c0-17.664-14.336-32-32-32s-32 14.336-32 32v563.040l-234.048-235.456c-12.48-12.576-32.704-12.64-45.248-0.128-12.544 12.448-12.608 32.704-0.128 45.248l287.52 289.248c3.168 3.2 6.88 5.536 10.816 7.136 4 1.792 8.384 2.912 13.088 2.912 11.296 0 20.704-6.176 26.4-14.976l254.368-253.952c12.544-12.448 12.544-32.704 0.064-45.216z","M864 928h-704c-17.664 0-32-14.304-32-32s14.336-32 32-32h704c17.696 0 32 14.304 32 32s-14.304 32-32 32z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_down"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":28,"id":15,"name":"lk_down","prevSize":32,"code":59653},"setIdx":0,"setId":2,"iconIdx":38},{"icon":{"paths":["M682.667 0c0.001-0 0.002-0 0.004-0 9.802 0 18.833 3.306 26.037 8.863l-0.099-0.074 4.267 3.712 207.061 207.061c10.127 10.128 16.875 23.634 18.41 38.683l0.022 0.271 0.299 6.315v332.501c-0.027 23.544-19.119 42.619-42.667 42.619-21.788 0-39.762-16.332-42.347-37.421l-0.021-0.206-0.299-4.992v-323.669l-188.373-188.331h-494.293v853.333h341.333c21.803 0.003 39.784 16.359 42.348 37.47l0.020 0.205 0.299 4.992c-0.003 21.803-16.359 39.784-37.47 42.348l-0.205 0.020-4.992 0.299h-362.667c-33.181-0.002-60.464-25.254-63.68-57.59l-0.021-0.266-0.299-6.144v-896c0.002-33.181 25.254-60.464 57.59-63.68l0.266-0.021 6.144-0.299h533.333z","M640 0c21.803 0.003 39.784 16.359 42.348 37.47l0.020 0.205 0.299 4.992v213.333h213.333c21.803 0.003 39.784 16.359 42.348 37.47l0.020 0.205 0.299 4.992c-0.003 21.803-16.359 39.784-37.47 42.348l-0.205 0.020-4.992 0.299h-234.667c-33.181-0.002-60.464-25.254-63.68-57.59l-0.021-0.266-0.299-6.144v-234.667c0-23.564 19.103-42.667 42.667-42.667v0zM951.168 695.168c7.716-7.691 18.362-12.446 30.119-12.446 23.564 0 42.667 19.103 42.667 42.667 0 9.874-3.354 18.964-8.985 26.194l0.072-0.096-3.541 4.011-240.896 240.939c-11.583 11.591-27.59 18.761-45.271 18.761-15.375 0-29.483-5.421-40.518-14.456l0.114 0.090-4.864-4.395-112.896-112.939c-7.691-7.716-12.446-18.362-12.446-30.119 0-23.564 19.103-42.667 42.667-42.667 9.874 0 18.964 3.354 26.194 8.985l-0.096-0.072 4.011 3.541 97.835 97.792 225.835-225.792z","M341.333 341.333h128q42.667 0 42.667 42.667v0q0 42.667-42.667 42.667h-128q-42.667 0-42.667-42.667v0q0-42.667 42.667-42.667z","M341.333 512h341.333q42.667 0 42.667 42.667v0q0 42.667-42.667 42.667h-341.333q-42.667 0-42.667-42.667v0q0-42.667 42.667-42.667z","M341.333 682.667h128q42.667 0 42.667 42.667v0q0 42.667-42.667 42.667h-128q-42.667 0-42.667-42.667v0q0-42.667 42.667-42.667z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_file_template"],"colorPermutations":{"1141141141731241731":[{},{},{},{},{}],"201201207124624724817277851":[{},{},{},{},{}]}},"attrs":[{},{},{},{},{}],"properties":{"order":29,"id":14,"name":"lk_file_template","prevSize":32,"code":59654},"setIdx":0,"setId":2,"iconIdx":39},{"icon":{"paths":["M517.292 1023.395c6.424 0.385 13.937 0.604 21.5 0.604 90.201 0 173.113-31.206 238.53-83.411l-0.77 0.593c58.416-51.248 95.095-126.048 95.095-209.415 0-4.236-0.095-8.45-0.282-12.64l0.021 0.596c0.069-2.107 0.108-4.584 0.108-7.071 0-61.379-23.975-117.159-63.071-158.485l0.101 0.107c-42.717-43.621-100.156-72.677-164.265-79.117l-1.123-0.091v-2.885c54.371-15.469 100.409-45.592 135.035-85.818l0.304-0.361c33.38-38.018 53.745-88.18 53.745-143.098 0-0.991-0.007-1.981-0.020-2.969l0.002 0.15c0.104-2.448 0.164-5.32 0.164-8.206 0-68.946-33.968-129.959-86.082-167.216l-0.623-0.423c-62.586-40.262-139-64.185-221.002-64.185-8.935 0-17.804 0.284-26.598 0.844l1.201-0.061h-348.084v1022.558h366.114zM436.702 182.031q194.776 0 194.776 111.421c0.045 1.166 0.070 2.534 0.070 3.909 0 37.706-19.227 70.921-48.412 90.376l-0.397 0.249c-34.366 21.421-76.091 34.121-120.782 34.121-4.444 0-8.86-0.126-13.242-0.373l0.608 0.027h-117.551v-239.729h104.99zM456.834 602.713c4.131-0.264 8.957-0.414 13.818-0.414 42.434 0 82.195 11.444 116.365 31.414l-1.094-0.591c27.575 17.492 45.613 47.857 45.613 82.435 0 1.19-0.021 2.375-0.064 3.555l0.005-0.171c0.044 1.137 0.069 2.471 0.069 3.811 0 35.923-17.99 67.645-45.453 86.646l-0.35 0.229c-32.469 20.732-72.057 33.044-114.521 33.044-4.322 0-8.614-0.128-12.872-0.379l0.587 0.028h-127.226v-239.428h125.183z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_bold"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":30,"id":13,"name":"lk_font_bold","prevSize":32,"code":59655},"setIdx":0,"setId":2,"iconIdx":40},{"icon":{"paths":["M413 637.5c-81.9 4.6-118.8-10.2-110.6-44.4 0-13.7 6.8-35.3 20.5-64.9 13.6-27.3 23.1-47.8 28.6-61.5h245.8c38.2 72.9 58.7 119.5 61.5 140 8.2 25.1-20.5 35.3-86 30.7v30.7h295v-30.7c-57.4 6.8-97-20.5-118.8-81.9l-229.4-491.6h-36.9l-213 481.4c-19.1 66-62.8 96.8-131.1 92.2v30.7h274.4v-30.7zM470.4 200.5l110.6 228.8h-217.1l106.5-228.8zM872.5 765.3h-728c-10.1 0-18.2 8.1-18.2 18.2v157.8c0 10 8.1 18.2 18.2 18.2h728c10.1 0 18.2-8.2 18.2-18.2v-157.8c0-10-8.2-18.2-18.2-18.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_color"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":31,"id":12,"name":"lk_font_color","prevSize":32,"code":59656},"setIdx":0,"setId":2,"iconIdx":41},{"icon":{"paths":["M832 96v64c0 17.673-14.327 32-32 32v0h-125.52l-160 640h93.52c17.673 0 32 14.327 32 32v0 64c0 17.673-14.327 32-32 32v0h-384c-17.673 0-32-14.327-32-32v0-64c0-17.673 14.327-32 32-32v0h125.52l160-640h-93.52c-17.673 0-32-14.327-32-32v0-64c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_italic"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":32,"id":11,"name":"lk_font_italic","prevSize":32,"code":59657},"setIdx":0,"setId":2,"iconIdx":42},{"icon":{"paths":["M117.333 341.333c-0-17.673 14.327-32 32-32v0h426.667c17.673 0 32 14.327 32 32s-14.327 32-32 32v0h-426.667c-17.673 0-32-14.327-32-32h0zM768 405.333c-35.346 0-64-28.654-64-64s28.654-64 64-64v0c35.346 0 64 28.654 64 64s-28.654 64-64 64v0zM768 469.333c70.692 0 128-57.308 128-128s-57.308-128-128-128v0c-70.692 0-128 57.308-128 128s57.308 128 128 128v0zM928 682.667c0-17.673-14.327-32-32-32v0h-426.667c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h426.667c17.673 0 32-14.327 32-32v0zM256 746.667c35.346 0 64-28.654 64-64s-28.654-64-64-64v0c-35.346 0-64 28.654-64 64s28.654 64 64 64v0zM256 810.667c-70.692 0-128-57.308-128-128s57.308-128 128-128v0c70.692 0 128 57.308 128 128s-57.308 128-128 128v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_icon_config"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":33,"id":10,"name":"lk_icon_config","prevSize":32,"code":59658},"setIdx":0,"setId":2,"iconIdx":43},{"icon":{"paths":["M1038.494 0c35.446 0 64.276 28.751 64.276 64.276v377.935h-85.622v-356.588h-931.525v824.399h349.184v85.701h-370.53c-35.498 0-64.276-28.777-64.276-64.276v-867.249c0-35.367 28.751-64.197 64.276-64.197zM1043.85 564.775c32.532 0 58.919 26.388 58.919 58.841v310.508c-0 32.54-26.379 58.919-58.919 58.919h-422.912c-32.506-0.045-58.841-26.407-58.841-58.919 0-0 0-0 0-0l-0 0v-310.508c0-32.453 26.388-58.841 58.841-58.841zM1017.068 650.398h-369.27v256.945h369.428v-256.945zM252.455 192.591l128.788 128.709 116.972-116.972v294.439h-294.518l116.815-116.972-128.63-128.551 60.495-60.652z"],"attrs":[{}],"width":1102,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_minimap"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":34,"id":9,"name":"lk_minimap","prevSize":32,"code":59659},"setIdx":0,"setId":2,"iconIdx":44},{"icon":{"paths":["M0 64h404.288l107.072 134.4h512.64v761.6h-1024v-896zM82.432 255.552v89.792h282.88l106.56 134.976h471.168v-90.56h-430.4l-108.416-134.208h-321.792z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_open"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":35,"id":8,"name":"lk_open","prevSize":32,"code":59660},"setIdx":0,"setId":2,"iconIdx":45},{"icon":{"paths":["M853.333 224h-53.333v-53.333c0-40.533-34.133-74.667-74.667-74.667h-554.667c-40.533 0-74.667 34.133-74.667 74.667v554.667c0 40.533 34.133 74.667 74.667 74.667h53.333v53.333c0 40.533 34.133 74.667 74.667 74.667h554.667c40.533 0 74.667-34.133 74.667-74.667v-554.667c0-40.533-34.133-74.667-74.667-74.667zM160 725.333v-554.667c0-6.4 4.267-10.667 10.667-10.667h554.667c6.4 0 10.667 4.267 10.667 10.667v554.667c0 6.4-4.267 10.667-10.667 10.667h-554.667c-6.4 0-10.667-4.267-10.667-10.667zM864 853.333c0 6.4-4.267 10.667-10.667 10.667h-554.667c-6.4 0-10.667-4.267-10.667-10.667v-53.333h437.333c40.533 0 74.667-34.133 74.667-74.667v-437.333h53.333c6.4 0 10.667 4.267 10.667 10.667v554.667z","M576 416h-96v-96c0-17.067-14.933-32-32-32s-32 14.933-32 32v96h-96c-17.067 0-32 14.933-32 32s14.933 32 32 32h96v96c0 17.067 14.933 32 32 32s32-14.933 32-32v-96h96c17.067 0 32-14.933 32-32s-14.933-32-32-32z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_plus_copy"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":36,"id":7,"name":"lk_plus_copy","prevSize":32,"code":59661},"setIdx":0,"setId":2,"iconIdx":46},{"icon":{"paths":["M604.27 507.86l0.14-335.98 0.070-166.020c0-4.3 5.18-6.47 8.24-3.46l353.94 347.4c5.27 5.18 5.3 13.67 0.050 18.87l-354.27 351.36c-3.060 3.030-8.26 0.87-8.26-3.44l0.090-208.73z","M53.94 590.92c8.74-157.92 87.43-274.43 253.54-339.15 87.43-33.66 177.77-46.61 271.030-49.19 13.47 0 21.33-1.67 25.9-5.5l-0.14 298.21c-3.68-2.21-9.17-2.74-17.010-2.74-49.54 2.59-99.090 2.59-148.63 15.54-99.090 23.3-177.77 72.49-206.91 168.28-37.89 126.86 5.83 264.070 148.63 341.74 0 7.77-5.83 5.18-20.4 0-5.83 0-8.74-2.59-11.66-2.59-171.59-60.5-289.71-215.96-294.92-388.2v-23.43c0.12-4.32 0.3-8.64 0.57-12.97z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_recover"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":37,"id":6,"name":"lk_recover","prevSize":32,"code":59662},"setIdx":0,"setId":2,"iconIdx":47},{"icon":{"paths":["M798.293 0.001h-712.959c-47.128-0-85.333 38.205-85.333 85.333l0 0v853.333c-0 47.128 38.205 85.333 85.333 85.333l0 0h853.333c47.128-0 85.333-38.205 85.333-85.333v0-712.959c0-0.073 0.001-0.16 0.001-0.247 0-11.721-4.726-22.338-12.377-30.049l0.003 0.003-183.040-183.040c-7.709-7.648-18.326-12.374-30.047-12.374-0.087 0-0.173 0-0.26 0.001l0.013-0zM213.333 76.801h597.333v179.2c0 23.564-19.103 42.667-42.667 42.667v0h-512c-23.564 0-42.667-19.103-42.667-42.667v0zM875.519 947.2h-725.333v-409.6c0-23.564 19.103-42.667 42.667-42.667v0h639.999c23.564 0 42.667 19.103 42.667 42.667v0z","M633.599 125.867h76.8v131.84h-76.8z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_save"],"colorPermutations":{"1141141141731241731":[{},{}],"201201207124624724817277851":[{},{}]}},"attrs":[{},{}],"properties":{"order":38,"id":5,"name":"lk_save","prevSize":32,"code":59663},"setIdx":0,"setId":2,"iconIdx":48},{"icon":{"paths":["M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512v0c282.77 0 512 229.23 512 512s-229.23 512-512 512v0zM466.347 752.555c10.198 9.577 23.962 15.461 39.101 15.461 0.474 0 0.946-0.006 1.417-0.017l-0.070 0.001c0.289 0.005 0.631 0.007 0.973 0.007 15.608 0 29.913-5.58 41.028-14.853l-0.102 0.083c10.147-9.37 16.48-22.742 16.48-37.592 0-0.374-0.004-0.747-0.012-1.119l0.001 0.056c0.003-0.215 0.005-0.47 0.005-0.725 0-14.743-6.337-28.005-16.435-37.213l-0.040-0.036c-10.533-9.198-24.407-14.807-39.59-14.807-0.812 0-1.62 0.016-2.424 0.048l0.116-0.004c-0.691-0.030-1.502-0.048-2.317-0.048-14.717 0-28.119 5.627-38.172 14.848l0.042-0.038c-10.524 8.594-17.19 21.57-17.19 36.102 0 0.658 0.014 1.313 0.041 1.964l-0.003-0.093c0 15.872 5.717 28.587 17.152 37.973zM638.464 293.376c-29.44-24.832-68.864-37.291-118.187-37.291-54.869 0-98.56 14.763-130.987 44.288-32.427 29.099-48.555 69.888-48.555 122.368h85.248c0-30.464 6.229-53.675 18.688-69.632 14.933-18.773 38.4-28.16 70.315-28.16 25.941 0 45.909 6.571 59.904 19.712 12.972 13.427 20.965 31.736 20.965 51.912 0 1.040-0.021 2.075-0.063 3.105l0.005-0.148c-0.309 19.363-7.95 36.883-20.259 49.958l0.035-0.038-8.96 9.813c-48.896 40.789-78.080 70.571-87.552 89.344-9.984 18.261-14.933 41.216-14.933 68.864v9.899h86.016v-9.899c0-16.811 3.755-32.341 11.264-46.336 7.424-13.653 17.408-25.088 29.952-34.475 34.901-28.587 56.32-47.104 64.256-55.552 18.517-22.955 27.733-51.797 27.733-86.528 0-43.093-14.933-76.885-44.885-101.205z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_tips"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":39,"id":4,"name":"lk_tips","prevSize":32,"code":59664},"setIdx":0,"setId":2,"iconIdx":49},{"icon":{"paths":["M213.333 640h-85.333v170.667c0 46.933 38.4 85.333 85.333 85.333h170.667v-85.333h-170.667v-170.667zM213.333 213.333h170.667v-85.333h-170.667c-46.933 0-85.333 38.4-85.333 85.333v170.667h85.333v-170.667zM810.667 128h-170.667v85.333h170.667v170.667h85.333v-170.667c0-46.933-38.4-85.333-85.333-85.333zM810.667 810.667h-170.667v85.333h170.667c46.933 0 85.333-38.4 85.333-85.333v-170.667h-85.333v170.667zM512 384c-70.827 0-128 57.173-128 128s57.173 128 128 128 128-57.173 128-128-57.173-128-128-128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_to_center"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":40,"id":3,"name":"lk_to_center","prevSize":32,"code":59665},"setIdx":0,"setId":2,"iconIdx":50},{"icon":{"paths":["M761.856 1024c113.728-206.048 132.896-520.32-313.856-509.824v253.824l-384-384 384-384v248.384c534.976-13.952 594.56 472.224 313.856 775.616z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_undo"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":41,"id":2,"name":"lk_undo","prevSize":32,"code":59666},"setIdx":0,"setId":2,"iconIdx":51},{"icon":{"paths":["M637 443h-118v-134c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134h-118c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8v-134h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM921 867l-146-146c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_zoom_in"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":42,"id":1,"name":"lk_zoom_in","prevSize":32,"code":59667},"setIdx":0,"setId":2,"iconIdx":52},{"icon":{"paths":["M637 443h-312c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM921 867l-146-146c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_zoom_out"],"colorPermutations":{"1141141141731241731":[{}],"201201207124624724817277851":[{}]}},"attrs":[{}],"properties":{"order":43,"id":0,"name":"lk_zoom_out","prevSize":32,"code":59668},"setIdx":0,"setId":2,"iconIdx":53}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon","name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/style.css b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/style.css deleted file mode 100644 index 0b34734..0000000 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/icons/fonts/style.css +++ /dev/null @@ -1,189 +0,0 @@ -@font-face { - font-family: 'icomoon'; - src: url('fonts/icomoon.eot?7w83vl'); - src: url('fonts/icomoon.eot?7w83vl#iefix') format('embedded-opentype'), - url('fonts/icomoon.ttf?7w83vl') format('truetype'), - url('fonts/icomoon.woff?7w83vl') format('woff'), - url('fonts/icomoon.svg?7w83vl#icomoon') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; -} - -[class^="icon-"], [class*=" icon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'icomoon' !important; - speak: never; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-lk_lozenge:before { - content: "\e935"; -} -.icon-lk_set_size:before { - content: "\e933"; -} -.icon-lk_right_arrow:before { - content: "\e934"; -} -.icon-lk_right_triangle:before { - content: "\e932"; -} -.icon-lk_ellipse:before { - content: "\e92f"; -} -.icon-lk_rect:before { - content: "\e931"; -} -.icon-lk_triangle:before { - content: "\e92c"; -} -.icon-lk_five_pointed:before { - content: "\e92e"; -} -.icon-lk_circle:before { - content: "\e930"; -} -.icon-lk_angular:before { - content: "\e92b"; -} -.icon-lk_shape_stroke:before { - content: "\e92a"; -} -.icon-lk_color_palette:before { - content: "\e92d"; -} -.icon-lk_font_size:before { - content: "\e929"; -} -.icon-lk_align_icon:before { - content: "\e928"; -} -.icon-lk_align_h_center:before { - content: "\e925"; -} -.icon-lk_align_bottom:before { - content: "\e926"; -} -.icon-lk_align_top:before { - content: "\e927"; -} -.icon-lk_align_right:before { - content: "\e922"; -} -.icon-lk_align_center:before { - content: "\e923"; -} -.icon-lk_align_left:before { - content: "\e924"; -} -.icon-lk_shape_set:before { - content: "\e921"; -} -.icon-lk_layer_set:before { - content: "\e920"; -} -.icon-lk_border_angle:before { - content: "\e91f"; -} -.icon-lk_line:before { - content: "\e91e"; -} -.icon-lk_text:before { - content: "\e91d"; -} -.icon-lk_warning_tips:before { - content: "\e91c"; -} -.icon-lk_data_output:before { - content: "\e919"; -} -.icon-lk_data_input:before { - content: "\e91a"; -} -.icon-lk_start:before { - content: "\e91b"; -} -.icon-lk_step_flow:before { - content: "\e918"; -} -.icon-lk_success:before { - content: "\e915"; -} -.icon-lk_failed:before { - content: "\e916"; -} -.icon-lk_running:before { - content: "\e917"; -} -.icon-lk_align_horizontal:before { - content: "\e900"; -} -.icon-lk_align_vertical:before { - content: "\e901"; -} -.icon-lk_close_x:before { - content: "\e902"; -} -.icon-lk_color_eyedropper_tool:before { - content: "\e903"; -} -.icon-lk_color_fill:before { - content: "\e904"; -} -.icon-lk_down:before { - content: "\e905"; -} -.icon-lk_file_template:before { - content: "\e906"; -} -.icon-lk_font_bold:before { - content: "\e907"; -} -.icon-lk_font_color:before { - content: "\e908"; -} -.icon-lk_font_italic:before { - content: "\e909"; -} -.icon-lk_icon_config:before { - content: "\e90a"; -} -.icon-lk_minimap:before { - content: "\e90b"; -} -.icon-lk_open:before { - content: "\e90c"; -} -.icon-lk_plus_copy:before { - content: "\e90d"; -} -.icon-lk_recover:before { - content: "\e90e"; -} -.icon-lk_save:before { - content: "\e90f"; -} -.icon-lk_tips:before { - content: "\e910"; -} -.icon-lk_to_center:before { - content: "\e911"; -} -.icon-lk_undo:before { - content: "\e912"; -} -.icon-lk_zoom_in:before { - content: "\e913"; -} -.icon-lk_zoom_out:before { - content: "\e914"; -} diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/index.vue b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/index.vue index c0f5594..3b46a23 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/index.vue @@ -170,7 +170,7 @@ const regNode = () => { } } // @ts-nocheck -const emit = defineEmits(["save"]) +const emit = defineEmits(["save",'initSucceed']) const {t} = useI18n() // 国际化 let graph: Graph = null let history = null @@ -248,7 +248,6 @@ const rightKeyMenu = computed(() => { if (cells.length === 0) { useMessage().warning(`没有选中元素`) } - console.log(that.pageConfig.propList) for (let i = 0; i < cells.length; i++) { const cellInfo = cells[i]; removeGroup(cellInfo.data.propGroupId) @@ -410,7 +409,6 @@ const rightKeyMenu = computed(() => { }); const clearData = () => { - console.log("clearData", graph) if (graph) { graph.fromJSON({}) graph.dispose() @@ -652,7 +650,6 @@ const init = (isDesignMode: boolean, bgConfig: any, data = {}, propDataInfo = {} addDrawRuler() draftDesignLayoutRef.value.updateZoom(graph.zoom()); }) - console.log("init", data) // 默认数据 graph.fromJSON({...data}) // 渲染元素 @@ -682,7 +679,10 @@ const init = (isDesignMode: boolean, bgConfig: any, data = {}, propDataInfo = {} svg.style.zIndex = 10 } logInfo('初始完成') - + emit('initSucceed', graph); + return new Promise((resolve)=>{ + resolve(graph) + }) } // initEnd const toPngUrl = (callback: (url: string) => void, options?: { @@ -1113,6 +1113,7 @@ const getJson = () => { propDefault[prop.groupId] = { groupName: prop.groupName, groupType: prop.groupType, + multiLanguage: prop.multiLanguage, isCombo: combo, minSize: min, maxSize: max, @@ -1311,6 +1312,7 @@ const handlerGroupList = (cells, isCombo = false, min, max) => { let groupId = `g${nextId()}_${getRandomHashColor()}` let groupName = '' let groupType = '1' + let multiLanguage = true; let type = cells[0].shape for (let i = 0; i < cells.length; i++) { const cellInfo = cells[i]; @@ -1320,7 +1322,7 @@ const handlerGroupList = (cells, isCombo = false, min, max) => { continue; } groupName = `${cellData.label}` - + console.log("cellData",cellData) let href = ''; let label = ''; if (cellData.propGroupId) { @@ -1330,6 +1332,9 @@ const handlerGroupList = (cells, isCombo = false, min, max) => { if (cellData.propGroupName) { groupName = cellData.propGroupName } + if (cellData.multiLanguage === false) { + multiLanguage = false + } if (isCombo) { groupType = '2' // 洗涤说明 groupName = groupName ? groupName : '洗涤说明1' @@ -1357,12 +1362,19 @@ const handlerGroupList = (cells, isCombo = false, min, max) => { propGroupId: groupId, propGroupType: groupType, propGroupName: groupName, + multiLanguage: multiLanguage, }, shape: cellInfo.shape, } } + // 清除后缀 label = `${label}`.split(".")[0] + let l = "zh-CN" + console.log("cellData",cellData) + if(cellData.locale){ + l = cellData.locale + } tmpPoint.push({ ...cellInfo.position(), angle: cellInfo.angle(), @@ -1373,7 +1385,9 @@ const handlerGroupList = (cells, isCombo = false, min, max) => { url: href, ratio: 0, label: label, - showLabel: label + showLabel: label, + //记录到选项中 + locale: l, } }) } @@ -1392,6 +1406,7 @@ const handlerGroupList = (cells, isCombo = false, min, max) => { groupId: groupId, groupName: groupName, groupType: groupType, + multiLanguage: multiLanguage, isCombo: isCombo, // 配对组合 第一个为文本 第二为图标 minSize: min, maxSize: max, @@ -1441,14 +1456,24 @@ const submitProp = (data) => { const info = data.pointList[i]; const groupId = data.groupId; const groupName = data.groupName; + const groupType = data.groupType; if (info.cellId) { const byId = graph.getCellById(info.cellId); if (byId) { data.cellIds.push(info.cellId); - markGroup(byId, groupId, groupName) + byId.setData({ + _$id: new Date().getTime(), // 刷新数据 + ...byId.getData, + propGroupId: groupId, + propGroupName: groupName, + propGroupType: groupType, + multiLanguage: data.multiLanguage, + locale: info.dataInfo.locale + }) continue; } } + // 新增节点 const id = 'id_' + nextId() const shape = data.shape @@ -1480,6 +1505,11 @@ const submitProp = (data) => { id, label: '', ...data.data, + locale: info.dataInfo.locale, + propGroupId: groupId, + propGroupName: groupName, + propGroupType: groupType, + multiLanguage: data.multiLanguage, parent: that.pageConfig?.autoSetNodeGroup || false } } diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/utils/Dpi.ts b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/utils/Dpi.ts index df314c8..14303e4 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/utils/Dpi.ts +++ b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/utils/Dpi.ts @@ -1,6 +1,4 @@ // 获取设备像素比 -import * as FileApi from "@/api/infra/file"; -import {replaceDomain} from "@/utils"; const dppx = window.devicePixelRatio || (window.matchMedia && window.matchMedia("(min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 1.5),(-moz-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)").matches ? 2 : 1) || @@ -39,6 +37,11 @@ export function calcDpiFromSize( screenSize=16,opt = 'd'){ const tmpImage = {} export function convertImageToBase64(url:string) { return new Promise(async (resolve)=>{ + if(url.indexOf('data:') !== -1){ + console.log('缓存') + resolve(url); + return; + } if(tmpImage[url]){ resolve(tmpImage[url]); console.log('缓存') @@ -54,7 +57,6 @@ export function convertImageToBase64(url:string) { resolve(url); } }) - } diff --git a/hangtag-ui/hangtag-ui-front/src/components/Form/src/Form.vue b/hangtag-ui/hangtag-ui-front/src/components/Form/src/Form.vue index 838bd1c..dd34826 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/Form/src/Form.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/Form/src/Form.vue @@ -182,7 +182,6 @@ export default defineComponent({ const slotsMap: Recordable = { ...setItemComponentSlots(slots, item?.componentProps?.slots, item.field) } - console.log("@@@@@@@item",item) if ( item?.component !== 'SelectV2' && item?.component !== 'Cascader' && diff --git a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/DataForm.vue b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/DataForm.vue new file mode 100644 index 0000000..8d42ce3 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/DataForm.vue @@ -0,0 +1,70 @@ + + diff --git a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/config.data.ts b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/config.data.ts new file mode 100644 index 0000000..e509b8e --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/config.data.ts @@ -0,0 +1,48 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const rules = reactive({ + name: [required], +}) + +// CrudSchema https://doc.iocoder.cn/vue3/crud-schema/ +const crudSchemas = reactive([ + { + label: 'id', + field: 'id', + isForm: false, + }, + { + label: '产品编码', + field: 'code', + isSearch: true, + }, + { + label: '产品类型', + field: 'productTypeId', + isSearch: true, + }, + { + label: '封面', + field: 'cover', + isSearch: false, + }, + { + label: '产品名称', + field: 'name', + isSearch: true, + }, + + { + label: '备注', + field: 'remark', + isSearch: false, + }, + { + label: '详情描述', + field: 'details', + isSearch: false, + } +]) +export const { allSchemas } = useCrudSchemas(crudSchemas) diff --git a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue new file mode 100644 index 0000000..50d550b --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/components/Search/src/Search.vue b/hangtag-ui/hangtag-ui-front/src/components/Search/src/Search.vue index 3218a63..e8d4538 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/Search/src/Search.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/Search/src/Search.vue @@ -47,7 +47,7 @@ const visible = ref(true) const newSchema = computed(() => { let schema: FormSchema[] = cloneDeep(props.schema) if (props.expand && props.expandField && !unref(visible)) { - const index = findIndex(schema, (v: FormSchema) => v.field === props.expandField) + const index = findIndex(schema, (v: FormSchema) => props.expandField.indexOf(v.field) === -1) if (index > -1) { const length = schema.length schema.splice(index + 1, length) @@ -97,6 +97,10 @@ const setVisible = () => { unref(elFormRef)?.resetFields() visible.value = !unref(visible) } +defineExpose({ + reset, + search +}) -
- + + + + +
+ + +
{{ badge }}
+
+ + + +
+ +
+ + + +
+ + + + + + +
+ +
+
+ +
+ {{ getSizeInfo }} +
+
+ +
+ {{ formData.specInfo.specSizeThk }} +
+
+ +
+ {{ formData.specInfo.specMaterial }} +
+
+ +
+ {{ formData.specInfo.mainColor }} +
+
+ + +
+ {{ + getValue(propInfoList[tmp.key]) + }} +
+
+ +
+
+
+ + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue new file mode 100644 index 0000000..fa3c234 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductSkuList.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductSkuList.vue new file mode 100644 index 0000000..471a5b0 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductSkuList.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/index.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/index.vue new file mode 100644 index 0000000..0a25366 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/index.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue index ae93e5e..e7fbdb5 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/index.vue @@ -9,27 +9,31 @@ label-width="150px" >
- - + + - + - + - + @@ -48,12 +52,12 @@ - + - + @@ -85,12 +89,12 @@ - + - + @@ -99,12 +103,12 @@ - + - + @@ -112,12 +116,12 @@ - + - + @@ -125,119 +129,126 @@ - + - - - - - - - - - - -
- 增加 - 删除 -
-
-
- - - - -
- -
    -
  • - {{ item }} -
  • -
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -245,68 +256,10 @@ - - -
- - - - - - - - - - 新增 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+ + +
@@ -316,10 +269,20 @@ - + - 上一步 - 下一步 + 上一步 + + + 创建 + + 下一步 + +
@@ -334,6 +297,7 @@ import * as BrandApi from "@/api/oms/brand"; import {CustomerApi, getCustomer} from "@/api/oms/customer"; import Demo03CourseList from "@/views/oms/order/createorder/components/Demo03CourseList.vue"; import Demo03StudentForm from "@/views/oms/order/createorder/Demo03StudentForm.vue"; +import OrderAddProductStep from "./components/OrderAddProductStep/index.vue"; // 计算当前时间之后指定天数的日期 const calculateDateAfterDays = (days) => { @@ -366,8 +330,7 @@ const getList = async () => { } } - - +const stepRef = ref(null); const formRef = ref() // 表单 Ref const selectedIndex = ref(-1) const stepIndex = ref(0) @@ -391,14 +354,15 @@ const formData = ref({ newEmail: '', newEmails: [], bizdate: new Date().toISOString(), - plansenddate: calculateDateAfterDays(7) + plansenddate: calculateDateAfterDays(7), + saleOrderEntry: [], }) const formRules = reactive({ - name: [{ required: true, message: '名称不能为空', trigger: 'blur' }], - contacts: [{ required: true, message: '联系人不能为空', trigger: 'blur' }], - brandId: [{ required: true, message: '品牌不能为空', trigger: 'blur' }], - phone: [{ required: true, message: '联系人手机号不能为空', trigger: 'blur' }, + name: [{required: true, message: '名称不能为空', trigger: 'blur'}], + contacts: [{required: true, message: '联系人不能为空', trigger: 'blur'}], + brandId: [{required: true, message: '品牌不能为空', trigger: 'blur'}], + phone: [{required: true, message: '联系人手机号不能为空', trigger: 'blur'}, { pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/, message: '请输入正确的手机号码', @@ -415,7 +379,6 @@ const formRules = reactive({ }) - const onAddEmail = () => { debugger; if (formData.value.newEmail.trim() !== '') { @@ -424,16 +387,16 @@ const onAddEmail = () => { } } -const selectItem = async (index:number) => { +const selectItem = async (index: number) => { selectedIndex.value = index; } const onDelEmail = () => { - if(selectedIndex.value>=0){ + if (selectedIndex.value >= 0) { debugger; formData.value.newEmails.splice(selectedIndex.value, 1); // 从数组中移除指定索引的元素 // 如果删除的是选中项,则清空选中项 - if(selectedIndex.value === selectedIndex.value) { + if (selectedIndex.value === selectedIndex.value) { selectedIndex.value = -1; } } @@ -452,12 +415,23 @@ const getCustomer = async () => { } } const backStep = async () => { - stepIndex.value = stepIndex.value-1; + stepIndex.value = stepIndex.value - 1; } const nextStep = async () => { - stepIndex.value = stepIndex.value+1; + stepIndex.value = stepIndex.value + 1; } +const addNewBill = ()=>{ + console.log("stepRef.value.getTableData()",stepRef.value.getTableData()) + // todo 校验 + + formData.value.saleOrderEntry = stepRef.value.getTableData() + console.log("提交",formData.value) +} + +const hasLastIndex = computed(()=>{ + return stepIndex.value >= 1; +}) /** 初始化 **/ const brandList = ref([]) // 品牌列表 @@ -465,9 +439,12 @@ onMounted(async () => { // 获取品牌列表 brandList.value = await BrandApi.getSimpleBrandList() customerData.value = await CustomerApi.getCustomer() - formData.value.customerId = customerData.value.id; - formData.value.username = customerData.value.name; - formData.value.company = customerData.value.company; + if (customerData.value) { + formData.value.customerId = customerData.value.id; + formData.value.username = customerData.value.name; + formData.value.company = customerData.value.company; + } + }) diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/ProductInfoForm.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/ProductInfoForm.vue index 3cde564..92a533d 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/ProductInfoForm.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/ProductInfoForm.vue @@ -12,121 +12,228 @@ label-width="100px" v-loading="formLoading" > - - - + + + + + -
- - 手动输入 +
+ + 手动输入 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 添加 + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
- - - - - - + + + +
+ 添加工艺 + 重置序号 + +
+ + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - -
- 添加 - -
- - - - - - - - - - - - - - - - - - - + +
+
- -
- - - - - - - - - - - - + - - - - - - + + + + + + + + + + + + +
diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/index.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/index.vue index 82867b1..19e53d0 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/productinfo/index.vue @@ -36,13 +36,14 @@ />
- + + + + @@ -52,7 +53,8 @@ clearable class="!w-240px" > - + + @@ -126,10 +128,15 @@ - - + + + + - { const previewDraftDesign = (id) => { designPreviewDialogRef.value.previewByProductId(id) } +const that = reactive({ + productTypeOptions: [], +}) +const init = async () => { + ProductTypeApi.getProductTypePage({ + pageNo: 1, + pageSize: 100 + }).then(r => { + that.productTypeOptions = r.list.map(item => { + return { + label: item.label, + value: item.id + } + }) + }) +} /** 初始化 **/ onMounted(() => { - getList() + getList(); + init(); }) diff --git a/sql/mysql/20241006/调整设计模板字段,新增产品工艺表.sql b/sql/mysql/20241006/调整设计模板字段,新增产品工艺表.sql new file mode 100644 index 0000000..8196289 --- /dev/null +++ b/sql/mysql/20241006/调整设计模板字段,新增产品工艺表.sql @@ -0,0 +1,22 @@ +ALTER TABLE oms_product_info ADD COLUMN `summary` VARCHAR(512) DEFAULT NULL COMMENT '简述'; + +ALTER TABLE oms_product_info ADD COLUMN `spec_size_width` DECIMAL(32,2) DEFAULT NULL COMMENT '规格尺寸宽度'; +ALTER TABLE oms_product_info ADD COLUMN `spec_size_height` DECIMAL(32,2) DEFAULT NULL COMMENT '规格尺寸宽度'; +ALTER TABLE oms_product_info ADD COLUMN `spec_size_thk` DECIMAL(32,2) DEFAULT NULL COMMENT '规格尺寸宽度'; +ALTER TABLE oms_product_info ADD COLUMN `spec_material` VARCHAR(512) DEFAULT NULL COMMENT '材质说明'; +-- 产品工艺 +DROP TABLE IF EXISTS oms_product_process; +CREATE TABLE oms_product_process( + id BIGINT(19) NOT NULL AUTO_INCREMENT COMMENT 'id' , + name VARCHAR(64) COMMENT '名称' , + remark VARCHAR(512) COMMENT '说明' , + step INT COMMENT '工序' , + product_info_id BIGINT COMMENT '产品id oms_product_info' , + creator VARCHAR(64) COMMENT '创建者' , + create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , + updater VARCHAR(64) COMMENT '更新者' , + update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' , + deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除' , + tenant_id BIGINT(19) NOT NULL COMMENT '租户编号' , + PRIMARY KEY (id) +) COMMENT = '产品工艺 '; \ No newline at end of file From 7b3e0d944adcff643058ecd0ac2c6000faa31e5a Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Tue, 8 Oct 2024 23:41:50 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E9=A1=B5=E9=9D=A2=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/util/FuncUtil.java | 16 + .../common/util/validation/AssertUtil.java | 31 + .../module/oms/enums/ErrorCodeConstants.java | 1 + .../enums/saleorder/SaleOrderTypeEnum.java | 33 + .../saleorder/SaleOrderFrontController.java | 64 ++ .../saleorder/dto/CreateSaleOrderDTO.java | 80 +- .../saleorder/dto/SaleOrderEntryItemDTO.java | 2 +- .../admin/saleorder/dto/SaleOrderSkuDTO.java | 6 +- .../saleordersku/SaleOrderSkuController.java | 95 +++ .../vo/SaleOrderSkuPageReqVO.java | 71 ++ .../saleordersku/vo/SaleOrderSkuRespVO.java | 88 +++ .../vo/SaleOrderSkuSaveReqVO.java | 64 ++ .../dal/dataobject/saleorder/SaleOrderDO.java | 45 ++ .../SaleOrderEntryDO.java | 6 +- .../saleordersku/SaleOrderSkuDO.java | 100 +++ .../saleordersku/SaleOrderSkuMapper.java | 42 ++ .../service/saleorder/SaleOrderService.java | 11 + .../saleorder/SaleOrderServiceImpl.java | 151 +++- .../saleordersku/SaleOrderSkuService.java | 55 ++ .../saleordersku/SaleOrderSkuServiceImpl.java | 74 ++ .../saleordersku/SaleOrderSkuMapper.xml | 12 + .../SaleOrderSkuServiceImplTest.java | 194 +++++ .../src/api/oms/productprocess/index.js | 53 -- .../src/views/Login/components/LoginForm.vue | 2 +- .../src/api/oms/saleorder/index.ts | 6 +- .../src/components/ProductInfoList/index.vue | 9 +- .../src/constants/EmitEventName.ts | 2 + .../OrderAddProductStep/ProductList.vue | 39 +- .../components/OrderAddProductStep/index.vue | 4 + .../src/views/oms/order/createorder/index.vue | 713 ++++++++++-------- 30 files changed, 1656 insertions(+), 413 deletions(-) create mode 100644 hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java create mode 100644 hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java rename hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/{saleorder => saleorderentry}/SaleOrderEntryDO.java (93%) create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java delete mode 100644 hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js create mode 100644 hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts diff --git a/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java index ed6c148..1f48451 100644 --- a/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java +++ b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java @@ -3,6 +3,8 @@ package cn.hangtag.framework.common.util; import cn.hangtag.framework.common.util.json.JsonUtils; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.digest.DigestUtil; @@ -18,6 +20,7 @@ import java.math.BigDecimal; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; +import java.time.Instant; import java.time.LocalDateTime; import java.util.*; import java.util.regex.Matcher; @@ -573,4 +576,17 @@ public class FuncUtil extends StringUtils { RequestAttributes requestAttributes =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()); return requestAttributes == null ? null : ((ServletRequestAttributes) requestAttributes).getRequest(); } + + public static LocalDateTime parseDate(Long timestamp) { + if(isEmpty(timestamp)){ + return null; + } + Instant instant = Instant.ofEpochMilli(timestamp); + // 将 Instant 转换为 LocalDateTime + return LocalDateTime.ofInstant(instant, java.time.ZoneId.systemDefault()); + } + private static final Snowflake snowflake = IdUtil.getSnowflake(); + public static long getNextId() { + return snowflake.nextId(); + } } diff --git a/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java new file mode 100644 index 0000000..1f5589a --- /dev/null +++ b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java @@ -0,0 +1,31 @@ +package cn.hangtag.framework.common.util.validation; + +import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.util.FuncUtil; +import org.springframework.util.Assert; + +/** + * 断言实用程序 + * + * @author YuanFeng + * @date 2024/09/23 + */ +public class AssertUtil { + public static void isEmpty(Object field, String errorMessage) { + if (FuncUtil.isEmpty(field)) { + throw new ServiceException(600, errorMessage); + } + } + + public static void isTrue(boolean b, String errorMessage) { + if (b) { + throw new ServiceException(600, errorMessage); + } + } + public static void isFalse(boolean b, String errorMessage) { + if (!b) { + throw new ServiceException(600, errorMessage); + } + } + +} diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index 10bd9af..1a34068 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -13,6 +13,7 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(3600, "OMS销售订单不存在"); ErrorCode SALE_ORDER_ENTRY_NOT_EXISTS = new ErrorCode(3700, "OMS销售订单明细不存在"); ErrorCode SALE_ORDER_ENTRY_PRICE_NOT_NULL= new ErrorCode(3701, "单价不允许为空"); + ErrorCode SALE_ORDER_SKU_NOT_EXISTS = new ErrorCode(3702, "产品单价记录不存在"); ErrorCode CUSTOMER_BRAND_NOT_EXISTS = new ErrorCode(3800, "客户和品牌关联不存在"); ErrorCode PRODUCT_CARE_ITEM_NOT_EXISTS = new ErrorCode(3900, "产品保养项 不存在"); ErrorCode PRODUCE_ORDER_NOT_EXISTS = new ErrorCode(4000, "生产制单不存在"); diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java new file mode 100644 index 0000000..225fce4 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java @@ -0,0 +1,33 @@ +package cn.hangtag.module.oms.enums.saleorder; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum SaleOrderTypeEnum { + + // 普通 + NORMAL("NORMAL", "普通"), + // 加急 + URGENT("URGENT", "加急"), + + ; + /** + * 类型 + */ + private final String type; + /** + * 类型名 + */ + private final String remark; + + public static SaleOrderTypeEnum getByType(String type) { + for (SaleOrderTypeEnum item : values()) { + if (item.getType().equals(type)) { + return item; + } + } + return null; + } +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java new file mode 100644 index 0000000..4be26d9 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java @@ -0,0 +1,64 @@ +package cn.hangtag.module.oms.controller.admin.saleorder; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.util.number.NumberUtils; +import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.framework.excel.core.util.ExcelUtils; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRemarkReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRespVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; +import cn.hangtag.module.oms.convert.saleorder.SaleOrderConvert; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; +import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; +import cn.hangtag.module.oms.service.customer.CustomerService; +import cn.hangtag.module.oms.service.saleorder.SaleOrderService; +import cn.hangtag.module.system.api.user.AdminUserApi; +import cn.hangtag.module.system.api.user.dto.AdminUserRespDTO; +import cn.hutool.core.map.MapUtil; +import com.alibaba.fastjson.JSONObject; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +@Tag(name = "销售订单") +@RestController +@RequestMapping("/front/oms/sale-order") +@Validated +public class SaleOrderFrontController { + + @Resource + private SaleOrderService saleOrderService; + @Resource + private CustomerService customerService; + @Resource + private AdminUserApi adminUserApi; + + + @PostMapping("/placeOrder") + @Operation(summary = "下单") + public CommonResult placeOrder(@Valid @RequestBody CreateSaleOrderDTO dto) { + return success(saleOrderService.placeOrder(dto)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java index 901b4b1..2836cbb 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java @@ -1,52 +1,90 @@ package cn.hangtag.module.oms.controller.admin.saleorder.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + @Data public class CreateSaleOrderDTO implements Serializable { - private String name; - - private String email; - - private String contacts; - + /** + * 联系人信息 + */ + @Schema(description = "联系人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "啊三") + private String contactName; + /** + * 联系人电话 + */ + @Schema(description = "联系人电话", requiredMode = Schema.RequiredMode.REQUIRED, example = "0755-523127") private String phone; + @Schema(description = "固定电话", example = "0755-523127") + private String tel; + + @Schema(description = "传真号码", example = "0755-523127") + private String fax; + + @Schema(description = "合同编码", example = "123456") + private String contractCode; + + @Schema(description = "零售商编码", example = "123456") + private String retailerCode; + + @Schema(description = "发票代码") private String invoiceCode; + @Schema(description = "发票名称") private String invoiceName; + @Schema(description = "发票地址") private String invoiceAddress; - private Long areaId; + @Schema(description = "发票备注") + private String invoiceRemarks; - private Integer status; + /** + * 客户id + */ + private Long customerId; + /** + * 品牌id + */ + private Long brandId; - private Integer type; + /** + * 订单状态 + */ + private Integer orderStatus; + @Schema(description = "备注", example = "备注信息") private String remarks; - private String orderNo; + /** + * 订单号 + */ + private String orderCode; - - - - private String newEmail; - - private String[] newEmails; + @Schema(description = "联系邮箱") + private String emails; /** - * 订单创建日期 + * 订单创建时间戳 */ - private String bizdate; + private Long bizdate; /** - * 交货日期 + * 交货日期 时间戳 */ - private String plansenddate; + private Long plansenddate; - private SaleOrderEntryItemDTO[] saleOrderEntry; + /** + * 是否分批交货 + */ + private Boolean isBatch; + + private List saleOrderEntry; } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java index b65e531..236e4b3 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java @@ -27,7 +27,7 @@ public class SaleOrderEntryItemDTO implements Serializable { /** * 产品id */ - private Long productId; + private Integer productId; /** * 产品编码 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java index 81d800e..6490b08 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java @@ -14,7 +14,7 @@ import java.util.List; @Data public class SaleOrderSkuDTO implements Serializable { - private String key; + private String itemKey; /** * 产品id @@ -35,12 +35,12 @@ public class SaleOrderSkuDTO implements Serializable { /** * 设计稿内容宽度 */ - private Integer width; + private Double width; /** * 设计稿内容高度 */ - private Integer height; + private Double height; /** * 最终稿件 base64编码数据 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java new file mode 100644 index 0000000..0206fc8 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java @@ -0,0 +1,95 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.util.object.BeanUtils; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +import cn.hangtag.framework.excel.core.util.ExcelUtils; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.module.oms.service.saleordersku.SaleOrderSkuService; + +@Tag(name = "管理后台 - 销售订单产品属性表 ") +@RestController +@RequestMapping("/oms/sale-order-sku") +@Validated +public class SaleOrderSkuController { + + @Resource + private SaleOrderSkuService saleOrderSkuService; + + @PostMapping("/create") + @Operation(summary = "创建销售订单产品属性表 ") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:create')") + public CommonResult createSaleOrderSku(@Valid @RequestBody SaleOrderSkuSaveReqVO createReqVO) { + return success(saleOrderSkuService.createSaleOrderSku(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新销售订单产品属性表 ") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:update')") + public CommonResult updateSaleOrderSku(@Valid @RequestBody SaleOrderSkuSaveReqVO updateReqVO) { + saleOrderSkuService.updateSaleOrderSku(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除销售订单产品属性表 ") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:delete')") + public CommonResult deleteSaleOrderSku(@RequestParam("id") Long id) { + saleOrderSkuService.deleteSaleOrderSku(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得销售订单产品属性表 ") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:query')") + public CommonResult getSaleOrderSku(@RequestParam("id") Long id) { + SaleOrderSkuDO saleOrderSku = saleOrderSkuService.getSaleOrderSku(id); + return success(BeanUtils.toBean(saleOrderSku, SaleOrderSkuRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得销售订单产品属性表 分页") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:query')") + public CommonResult> getSaleOrderSkuPage(@Valid SaleOrderSkuPageReqVO pageReqVO) { + PageResult pageResult = saleOrderSkuService.getSaleOrderSkuPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, SaleOrderSkuRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出销售订单产品属性表 Excel") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportSaleOrderSkuExcel(@Valid SaleOrderSkuPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = saleOrderSkuService.getSaleOrderSkuPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "销售订单产品属性表 .xls", "数据", SaleOrderSkuRespVO.class, + BeanUtils.toBean(list, SaleOrderSkuRespVO.class)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java new file mode 100644 index 0000000..96e8f40 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java @@ -0,0 +1,71 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.hangtag.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 销售订单产品属性表 分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SaleOrderSkuPageReqVO extends PageParam { + + @Schema(description = "销售订单分表id oms_saleorder_entry", example = "26754") + private String entryId; + + @Schema(description = "数据key") + private String itemKey; + + @Schema(description = "销售订单id oms_saleorder", example = "32307") + private String saleOrderId; + + @Schema(description = "产品id oms_product_info", example = "17865") + private String productId; + + @Schema(description = "数量") + private Integer orderQty; + + @Schema(description = "设计稿id oms_draft_design_data", example = "1282") + private Long draftDesignId; + + @Schema(description = "设计稿宽") + private BigDecimal width; + + @Schema(description = "设计稿高") + private BigDecimal height; + + @Schema(description = "预览图") + private String previewImage; + + @Schema(description = "动态属性 json动态属性") + private String propInfo; + + @Schema(description = "规格 json完整信息") + private String specInfo; + + @Schema(description = "宽(mm)") + private BigDecimal specSizeWidth; + + @Schema(description = "高(mm)") + private BigDecimal specSizeHeight; + + @Schema(description = "厚度(mm)") + private BigDecimal specSizeThk; + + @Schema(description = "材质") + private String specMaterial; + + @Schema(description = "主色风格") + private String mainColor; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java new file mode 100644 index 0000000..a285833 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java @@ -0,0 +1,88 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 销售订单产品属性表 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SaleOrderSkuRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24887") + @ExcelProperty("id") + private Long id; + + @Schema(description = "销售订单分表id oms_saleorder_entry", example = "26754") + @ExcelProperty("销售订单分表id oms_saleorder_entry") + private String entryId; + + @Schema(description = "数据key") + @ExcelProperty("数据key") + private String itemKey; + + @Schema(description = "销售订单id oms_saleorder", example = "32307") + @ExcelProperty("销售订单id oms_saleorder") + private String saleOrderId; + + @Schema(description = "产品id oms_product_info", example = "17865") + @ExcelProperty("产品id oms_product_info") + private String productId; + + @Schema(description = "数量") + @ExcelProperty("数量") + private Integer orderQty; + + @Schema(description = "设计稿id oms_draft_design_data", example = "1282") + @ExcelProperty("设计稿id oms_draft_design_data") + private Long draftDesignId; + + @Schema(description = "设计稿宽") + @ExcelProperty("设计稿宽") + private BigDecimal width; + + @Schema(description = "设计稿高") + @ExcelProperty("设计稿高") + private BigDecimal height; + + @Schema(description = "预览图") + @ExcelProperty("预览图") + private String previewImage; + + @Schema(description = "动态属性 json动态属性") + @ExcelProperty("动态属性 json动态属性") + private String propInfo; + + @Schema(description = "规格 json完整信息") + @ExcelProperty("规格 json完整信息") + private String specInfo; + + @Schema(description = "宽(mm)") + @ExcelProperty("宽(mm)") + private BigDecimal specSizeWidth; + + @Schema(description = "高(mm)") + @ExcelProperty("高(mm)") + private BigDecimal specSizeHeight; + + @Schema(description = "厚度(mm)") + @ExcelProperty("厚度(mm)") + private BigDecimal specSizeThk; + + @Schema(description = "材质") + @ExcelProperty("材质") + private String specMaterial; + + @Schema(description = "主色风格") + @ExcelProperty("主色风格") + private String mainColor; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java new file mode 100644 index 0000000..0641f88 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java @@ -0,0 +1,64 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 销售订单产品属性表 新增/修改 Request VO") +@Data +public class SaleOrderSkuSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24887") + private Long id; + + @Schema(description = "销售订单分表id oms_saleorder_entry", example = "26754") + private String entryId; + + @Schema(description = "数据key") + private String itemKey; + + @Schema(description = "销售订单id oms_saleorder", example = "32307") + private String saleOrderId; + + @Schema(description = "产品id oms_product_info", example = "17865") + private String productId; + + @Schema(description = "数量") + private Integer orderQty; + + @Schema(description = "设计稿id oms_draft_design_data", example = "1282") + private Long draftDesignId; + + @Schema(description = "设计稿宽") + private BigDecimal width; + + @Schema(description = "设计稿高") + private BigDecimal height; + + @Schema(description = "预览图") + private String previewImage; + + @Schema(description = "动态属性 json动态属性") + private String propInfo; + + @Schema(description = "规格 json完整信息") + private String specInfo; + + @Schema(description = "宽(mm)") + private BigDecimal specSizeWidth; + + @Schema(description = "高(mm)") + private BigDecimal specSizeHeight; + + @Schema(description = "厚度(mm)") + private BigDecimal specSizeThk; + + @Schema(description = "材质") + private String specMaterial; + + @Schema(description = "主色风格") + private String mainColor; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java index 0ecd889..561b5f5 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java @@ -1,5 +1,8 @@ package cn.hangtag.module.oms.dal.dataobject.saleorder; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; +import cn.hutool.core.bean.BeanUtil; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -9,6 +12,7 @@ import java.time.LocalDateTime; import java.time.LocalDateTime; import java.time.LocalDateTime; import java.time.LocalDateTime; + import com.baomidou.mybatisplus.annotation.*; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; @@ -121,4 +125,45 @@ public class SaleOrderDO extends BaseDO { */ private LocalDateTime auditorTime; + /** + * 订单号 + */ + private String orderCode; + /** + * 联系人名称 + */ + private String contactName; + /** + * 固定电话 + */ + private String tel; + /** + * 合同编码 + */ + private String contractCode; + /** + * 零售商单号 + */ + private String retailerCode; + /** + * 发票地址 + */ + private String invoiceAddress; + + + /** + * 品牌id + */ + private Integer brandId; + + /** + * 是否分批交货 分批交货以明细表中的交货日期为准 + */ + private Boolean isBatch; + + + + public SaleOrderDO(CreateSaleOrderDTO dto) { + BeanUtil.copyProperties(dto, this,"bizdate","plansenddate"); + } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderEntryDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java similarity index 93% rename from hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderEntryDO.java rename to hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java index 4a89eaf..260b4b7 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderEntryDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java @@ -1,7 +1,8 @@ package cn.hangtag.module.oms.dal.dataobject.saleorderentry; import lombok.*; -import java.util.*; + +import java.time.LocalDateTime; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.*; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; @@ -59,4 +60,7 @@ public class SaleOrderEntryDO extends BaseDO { */ private BigDecimal amount; + // + private LocalDateTime deliveryDate; + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java new file mode 100644 index 0000000..480ac57 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java @@ -0,0 +1,100 @@ +package cn.hangtag.module.oms.dal.dataobject.saleordersku; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; + +/** + * 销售订单产品属性表 DO + * + * @author 管理员 + */ +@TableName("oms_sale_order_sku") +@KeySequence("oms_sale_order_sku_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaleOrderSkuDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 销售订单分表id oms_saleorder_entry + */ + private Long entryId; + /** + * 数据key + */ + private String itemKey; + /** + * 销售订单id oms_saleorder + */ + private String saleOrderId; + /** + * 产品id oms_product_info + */ + private String productId; + /** + * 数量 + */ + private Integer orderQty; + /** + * 设计稿id oms_draft_design_data + */ + private Long draftDesignId; + /** + * 设计稿宽 + */ + private BigDecimal width; + /** + * 设计稿高 + */ + private BigDecimal height; + /** + * 预览图 + */ + private String previewImage; + /** + * 动态属性 json动态属性 + */ + private String propInfo; + /** + * 规格 json完整信息 + */ + private String specInfo; + /** + * 宽(mm) + */ + private BigDecimal specSizeWidth; + /** + * 高(mm) + */ + private BigDecimal specSizeHeight; + /** + * 厚度(mm) + */ + private BigDecimal specSizeThk; + /** + * 材质 + */ + private String specMaterial; + /** + * 主色风格 + */ + private String mainColor; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java new file mode 100644 index 0000000..65f6383 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java @@ -0,0 +1,42 @@ +package cn.hangtag.module.oms.dal.mysql.saleordersku; + +import java.util.*; + +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import org.apache.ibatis.annotations.Mapper; +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; + +/** + * 销售订单产品属性表 Mapper + * + * @author 管理员 + */ +@Mapper +public interface SaleOrderSkuMapper extends BaseMapperX { + + default PageResult selectPage(SaleOrderSkuPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SaleOrderSkuDO::getEntryId, reqVO.getEntryId()) + .eqIfPresent(SaleOrderSkuDO::getItemKey, reqVO.getItemKey()) + .eqIfPresent(SaleOrderSkuDO::getSaleOrderId, reqVO.getSaleOrderId()) + .eqIfPresent(SaleOrderSkuDO::getProductId, reqVO.getProductId()) + .eqIfPresent(SaleOrderSkuDO::getOrderQty, reqVO.getOrderQty()) + .eqIfPresent(SaleOrderSkuDO::getDraftDesignId, reqVO.getDraftDesignId()) + .eqIfPresent(SaleOrderSkuDO::getWidth, reqVO.getWidth()) + .eqIfPresent(SaleOrderSkuDO::getHeight, reqVO.getHeight()) + .eqIfPresent(SaleOrderSkuDO::getPreviewImage, reqVO.getPreviewImage()) + .eqIfPresent(SaleOrderSkuDO::getPropInfo, reqVO.getPropInfo()) + .eqIfPresent(SaleOrderSkuDO::getSpecInfo, reqVO.getSpecInfo()) + .eqIfPresent(SaleOrderSkuDO::getSpecSizeWidth, reqVO.getSpecSizeWidth()) + .eqIfPresent(SaleOrderSkuDO::getSpecSizeHeight, reqVO.getSpecSizeHeight()) + .eqIfPresent(SaleOrderSkuDO::getSpecSizeThk, reqVO.getSpecSizeThk()) + .eqIfPresent(SaleOrderSkuDO::getSpecMaterial, reqVO.getSpecMaterial()) + .eqIfPresent(SaleOrderSkuDO::getMainColor, reqVO.getMainColor()) + .betweenIfPresent(SaleOrderSkuDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SaleOrderSkuDO::getId)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java index 732348f..a07eaf0 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java @@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.*; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.*; import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderSummaryRespVO; import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendReqVO; @@ -99,4 +100,14 @@ public interface SaleOrderService { Long getCountByBillStatus(String value, Long customerId); List> getOrderCountTrendComparison(TradeOrderTrendReqVO reqVO); + + /** + * 下订单 + * + * @param dto DTO + * @return {@link Long } + */ + Long placeOrder(CreateSaleOrderDTO dto); + + public String getNewOrderCode(); } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index 053306e..d925e46 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -1,14 +1,22 @@ package cn.hangtag.module.oms.service.saleorder; import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.util.FuncUtil; import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.framework.common.util.validation.AssertUtil; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; +import cn.hangtag.framework.security.core.LoginUser; import cn.hangtag.framework.security.core.util.SecurityFrameworkUtils; import cn.hangtag.module.oms.common.utils.NumberChineseFormatterUtils; import cn.hangtag.module.oms.common.utils.WKHtmlToPdfUtil; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; import cn.hangtag.module.oms.controller.admin.product.vo.ProductPriceSaveReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.SaleOrderEntryItemDTO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.SaleOrderSkuDTO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRemarkReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; @@ -23,25 +31,34 @@ import cn.hangtag.module.oms.dal.dataobject.salecontract.SaleContractDO; import cn.hangtag.module.oms.dal.dataobject.salecontractentry.SaleContractEntryDO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; import cn.hangtag.module.oms.dal.mysql.saleorder.SaleOrderMapper; import cn.hangtag.module.oms.dal.mysql.saleorderentry.SaleOrderEntryMapper; +import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; import cn.hangtag.module.oms.enums.ErrorCodeConstants; import cn.hangtag.module.oms.enums.TimeRangeTypeEnum; import cn.hangtag.module.oms.enums.common.BillStatusEnum; import cn.hangtag.module.oms.enums.saleorder.SaleOrderStatusEnum; +import cn.hangtag.module.oms.enums.saleorder.SaleOrderTypeEnum; +import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; import cn.hangtag.module.oms.service.customer.CustomerService; import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; import cn.hangtag.module.oms.service.product.ProductPriceService; import cn.hangtag.module.oms.service.productinfo.ProductInfoService; import cn.hangtag.module.oms.service.salecontract.SaleContractService; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Maps; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,6 +76,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -76,24 +94,20 @@ import static cn.hangtag.module.oms.enums.ErrorCodeConstants.SALE_ORDER_NOT_EXIS @Service @Validated @Slf4j +@AllArgsConstructor public class SaleOrderServiceImpl implements SaleOrderService { - @Resource - private SaleOrderMapper saleOrderMapper; - @Resource - private SaleOrderEntryMapper saleOrderEntryMapper; - @Resource - private ProduceOrderService produceOrderService; - @Resource - private ProductInfoService productInfoService; - @Resource - private SaleContractService saleContractService; - @Resource - private CustomerService customerService; - @Resource - private ProductPriceService productPriceService; - @Resource - private TemplateEngine templateEngine; + + private final SaleOrderMapper saleOrderMapper; + private final SaleOrderEntryMapper saleOrderEntryMapper; + private final SaleOrderSkuMapper skuOrderSkuMapper; + private final ProduceOrderService produceOrderService; + private final ProductInfoService productInfoService; + private final SaleContractService saleContractService; + private final CustomerService customerService; + private final ProductPriceService productPriceService; + private final TemplateEngine templateEngine; + @Override @Transactional(rollbackFor = Exception.class) @@ -440,6 +454,111 @@ public class SaleOrderServiceImpl implements SaleOrderService { .collect(Collectors.toList()); } + public static void main(String[] args) { + long l = IdUtil.getSnowflake().nextId(); + System.out.println(l); + } + @Override + @Transactional(rollbackFor = Exception.class) + public Long placeOrder(CreateSaleOrderDTO dto) { + SaleOrderDO order = new SaleOrderDO(dto); + order = wrapperEntity(order, dto); + List saleOrderEntry = dto.getSaleOrderEntry(); + + List entryList = new ArrayList<>(); + List skuList = new ArrayList<>(); + // 转成订单条目 + for (SaleOrderEntryItemDTO itemDTO : saleOrderEntry) { + SaleOrderEntryDO entry = SaleOrderEntryDO.builder() + .id(FuncUtil.getNextId()) + .parentId(order.getId()) + .materialId(itemDTO.getProductId()) + .materialName(itemDTO.getProductName()) + .qty(itemDTO.getOrderQty()) + .deliveryDate(FuncUtil.parseDate(itemDTO.getDeliveryDate())).build(); + + entryList.add(entry); + List productSkuList = itemDTO.getProductSkuList(); + // sku + for (SaleOrderSkuDTO saleOrderSkuDTO : productSkuList) { + SaleOrderSkuDO saleOrderSkuDO = new SaleOrderSkuDO(); + BeanUtil.copyProperties(saleOrderSkuDTO,saleOrderSkuDO); + saleOrderSkuDO.setEntryId(entry.getId()); + saleOrderSkuDO.setId(FuncUtil.getNextId()); + skuList.add(saleOrderSkuDO); + } + + } + saleOrderMapper.insert(order); + saleOrderEntryMapper.insertBatch(entryList); + skuOrderSkuMapper.insertBatch(skuList); + System.out.println(order); + return order.getId(); + } + private static final long codeId = 6L; + @Override + public String getNewOrderCode() { + String s = ""; + int count = 10; + while (true){ + count --; + try { + s = CodingRulesUtils.generateCode(codeId, false); + checkCode(null,s); + return s; + }catch (ServiceException e){ + log.warn("重复或者下一个编码"); + if(count < 0){ + log.error("编码获取失败"); + return ""; + } + } + } + } + private void checkCode(Long id,String code){ + if(FuncUtil.isNotEmpty(code)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(SaleOrderDO::getId,SaleOrderDO::getOrderCode, BaseDO::getDeleted); + lambdaQueryWrapper.eq(SaleOrderDO::getOrderCode, code); + lambdaQueryWrapper.eq(SaleOrderDO::getDeleted,false); + List dos = saleOrderMapper.selectList(lambdaQueryWrapper); + if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { + for (SaleOrderDO aDo : dos) { + // 出现重复并当前id 不一致 + if(!FuncUtil.equals(aDo.getId(), id)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + } + } + } + } + private SaleOrderDO wrapperEntity(SaleOrderDO order,CreateSaleOrderDTO dto){ + // 客户信息 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + AssertUtil.isEmpty(loginUser,"登录信息已过期,请重新登录"); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + AssertUtil.isEmpty(customer,"客户信息不存在"); + + order.setCustomerId(customer.getId()); + if(FuncUtil.isEmpty(order.getId())){ + order.setId(FuncUtil.getNextId()); + } + order.setBizdate(LocalDateTime.now()); + order.setPlansenddate( FuncUtil.parseDate(dto.getPlansenddate())); + // 设置订单状态 + order.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); + order.setBillStatus(BillStatusEnum.SAVE.getValue()); + String orderType = order.getOrderType(); + if(FuncUtil.isEmpty(orderType)){ + order.setOrderType(SaleOrderTypeEnum.NORMAL.getType()); + } + order.setBillno(getNewOrderCode()); + return order; + } + private List getOrderCountTrend(Integer timeRangeType, LocalDateTime beginTime, LocalDateTime endTime) { // 情况一:按年统计时,以月份分组 if (TimeRangeTypeEnum.YEAR.getType().equals(timeRangeType)) { diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java new file mode 100644 index 0000000..62113c0 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java @@ -0,0 +1,55 @@ +package cn.hangtag.module.oms.service.saleordersku; + +import java.util.*; +import javax.validation.*; +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; + +/** + * 销售订单产品属性表 Service 接口 + * + * @author 管理员 + */ +public interface SaleOrderSkuService { + + /** + * 创建销售订单产品属性表 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSaleOrderSku(@Valid SaleOrderSkuSaveReqVO createReqVO); + + /** + * 更新销售订单产品属性表 + * + * @param updateReqVO 更新信息 + */ + void updateSaleOrderSku(@Valid SaleOrderSkuSaveReqVO updateReqVO); + + /** + * 删除销售订单产品属性表 + * + * @param id 编号 + */ + void deleteSaleOrderSku(Long id); + + /** + * 获得销售订单产品属性表 + * + * @param id 编号 + * @return 销售订单产品属性表 + */ + SaleOrderSkuDO getSaleOrderSku(Long id); + + /** + * 获得销售订单产品属性表 分页 + * + * @param pageReqVO 分页查询 + * @return 销售订单产品属性表 分页 + */ + PageResult getSaleOrderSkuPage(SaleOrderSkuPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java new file mode 100644 index 0000000..7d8806f --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java @@ -0,0 +1,74 @@ +package cn.hangtag.module.oms.service.saleordersku; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.util.object.BeanUtils; + +import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; + +import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; + +/** + * 销售订单产品属性表 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class SaleOrderSkuServiceImpl implements SaleOrderSkuService { + + @Resource + private SaleOrderSkuMapper saleOrderSkuMapper; + + @Override + public Long createSaleOrderSku(SaleOrderSkuSaveReqVO createReqVO) { + // 插入 + SaleOrderSkuDO saleOrderSku = BeanUtils.toBean(createReqVO, SaleOrderSkuDO.class); + saleOrderSkuMapper.insert(saleOrderSku); + // 返回 + return saleOrderSku.getId(); + } + + @Override + public void updateSaleOrderSku(SaleOrderSkuSaveReqVO updateReqVO) { + // 校验存在 + validateSaleOrderSkuExists(updateReqVO.getId()); + // 更新 + SaleOrderSkuDO updateObj = BeanUtils.toBean(updateReqVO, SaleOrderSkuDO.class); + saleOrderSkuMapper.updateById(updateObj); + } + + @Override + public void deleteSaleOrderSku(Long id) { + // 校验存在 + validateSaleOrderSkuExists(id); + // 删除 + saleOrderSkuMapper.deleteById(id); + } + + private void validateSaleOrderSkuExists(Long id) { + if (saleOrderSkuMapper.selectById(id) == null) { + throw exception(SALE_ORDER_SKU_NOT_EXISTS); + } + } + + @Override + public SaleOrderSkuDO getSaleOrderSku(Long id) { + return saleOrderSkuMapper.selectById(id); + } + + @Override + public PageResult getSaleOrderSkuPage(SaleOrderSkuPageReqVO pageReqVO) { + return saleOrderSkuMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml new file mode 100644 index 0000000..f9df915 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java new file mode 100644 index 0000000..526ae18 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java @@ -0,0 +1,194 @@ +package cn.hangtag.module.oms.service.saleordersku; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; + +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; +import cn.hangtag.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; +import static cn.hangtag.framework.test.core.util.AssertUtils.*; +import static cn.hangtag.framework.test.core.util.RandomUtils.*; +import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; +import static cn.hangtag.framework.common.util.object.ObjectUtils.*; +import static cn.hangtag.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link SaleOrderSkuServiceImpl} 的单元测试类 + * + * @author 管理员 + */ +@Import(SaleOrderSkuServiceImpl.class) +public class SaleOrderSkuServiceImplTest extends BaseDbUnitTest { + + @Resource + private SaleOrderSkuServiceImpl saleOrderSkuService; + + @Resource + private SaleOrderSkuMapper saleOrderSkuMapper; + + @Test + public void testCreateSaleOrderSku_success() { + // 准备参数 + SaleOrderSkuSaveReqVO createReqVO = randomPojo(SaleOrderSkuSaveReqVO.class).setId(null); + + // 调用 + Long saleOrderSkuId = saleOrderSkuService.createSaleOrderSku(createReqVO); + // 断言 + assertNotNull(saleOrderSkuId); + // 校验记录的属性是否正确 + SaleOrderSkuDO saleOrderSku = saleOrderSkuMapper.selectById(saleOrderSkuId); + assertPojoEquals(createReqVO, saleOrderSku, "id"); + } + + @Test + public void testUpdateSaleOrderSku_success() { + // mock 数据 + SaleOrderSkuDO dbSaleOrderSku = randomPojo(SaleOrderSkuDO.class); + saleOrderSkuMapper.insert(dbSaleOrderSku);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SaleOrderSkuSaveReqVO updateReqVO = randomPojo(SaleOrderSkuSaveReqVO.class, o -> { + o.setId(dbSaleOrderSku.getId()); // 设置更新的 ID + }); + + // 调用 + saleOrderSkuService.updateSaleOrderSku(updateReqVO); + // 校验是否更新正确 + SaleOrderSkuDO saleOrderSku = saleOrderSkuMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, saleOrderSku); + } + + @Test + public void testUpdateSaleOrderSku_notExists() { + // 准备参数 + SaleOrderSkuSaveReqVO updateReqVO = randomPojo(SaleOrderSkuSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> saleOrderSkuService.updateSaleOrderSku(updateReqVO), SALE_ORDER_SKU_NOT_EXISTS); + } + + @Test + public void testDeleteSaleOrderSku_success() { + // mock 数据 + SaleOrderSkuDO dbSaleOrderSku = randomPojo(SaleOrderSkuDO.class); + saleOrderSkuMapper.insert(dbSaleOrderSku);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSaleOrderSku.getId(); + + // 调用 + saleOrderSkuService.deleteSaleOrderSku(id); + // 校验数据不存在了 + assertNull(saleOrderSkuMapper.selectById(id)); + } + + @Test + public void testDeleteSaleOrderSku_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> saleOrderSkuService.deleteSaleOrderSku(id), SALE_ORDER_SKU_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSaleOrderSkuPage() { + // mock 数据 + SaleOrderSkuDO dbSaleOrderSku = randomPojo(SaleOrderSkuDO.class, o -> { // 等会查询到 + o.setEntryId(null); + o.setItemKey(null); + o.setSaleOrderId(null); + o.setProductId(null); + o.setOrderQty(null); + o.setDraftDesignId(null); + o.setWidth(null); + o.setHeight(null); + o.setPreviewImage(null); + o.setPropInfo(null); + o.setSpecInfo(null); + o.setSpecSizeWidth(null); + o.setSpecSizeHeight(null); + o.setSpecSizeThk(null); + o.setSpecMaterial(null); + o.setMainColor(null); + o.setCreateTime(null); + }); + saleOrderSkuMapper.insert(dbSaleOrderSku); + // 测试 entryId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setEntryId(null))); + // 测试 itemKey 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setItemKey(null))); + // 测试 saleOrderId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSaleOrderId(null))); + // 测试 productId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setProductId(null))); + // 测试 orderQty 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setOrderQty(null))); + // 测试 draftDesignId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setDraftDesignId(null))); + // 测试 width 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setWidth(null))); + // 测试 height 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setHeight(null))); + // 测试 previewImage 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setPreviewImage(null))); + // 测试 propInfo 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setPropInfo(null))); + // 测试 specInfo 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecInfo(null))); + // 测试 specSizeWidth 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecSizeWidth(null))); + // 测试 specSizeHeight 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecSizeHeight(null))); + // 测试 specSizeThk 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecSizeThk(null))); + // 测试 specMaterial 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecMaterial(null))); + // 测试 mainColor 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setMainColor(null))); + // 测试 createTime 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setCreateTime(null))); + // 准备参数 + SaleOrderSkuPageReqVO reqVO = new SaleOrderSkuPageReqVO(); + reqVO.setEntryId(null); + reqVO.setItemKey(null); + reqVO.setSaleOrderId(null); + reqVO.setProductId(null); + reqVO.setOrderQty(null); + reqVO.setDraftDesignId(null); + reqVO.setWidth(null); + reqVO.setHeight(null); + reqVO.setPreviewImage(null); + reqVO.setPropInfo(null); + reqVO.setSpecInfo(null); + reqVO.setSpecSizeWidth(null); + reqVO.setSpecSizeHeight(null); + reqVO.setSpecSizeThk(null); + reqVO.setSpecMaterial(null); + reqVO.setMainColor(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = saleOrderSkuService.getSaleOrderSkuPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbSaleOrderSku, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js b/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js deleted file mode 100644 index 6ee86b4..0000000 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 创建产品工艺 -export function createProductProcess(data) { - return request({ - url: '/oms/product-process/create', - method: 'post', - data: data - }) -} - -// 更新产品工艺 -export function updateProductProcess(data) { - return request({ - url: '/oms/product-process/update', - method: 'put', - data: data - }) -} - -// 删除产品工艺 -export function deleteProductProcess(id) { - return request({ - url: '/oms/product-process/delete?id=' + id, - method: 'delete' - }) -} - -// 获得产品工艺 -export function getProductProcess(id) { - return request({ - url: '/oms/product-process/get?id=' + id, - method: 'get' - }) -} - -// 获得产品工艺 分页 -export function getProductProcessPage(params) { - return request({ - url: '/oms/product-process/page', - method: 'get', - params - }) -} -// 导出产品工艺 Excel -export function exportProductProcessExcel(params) { - return request({ - url: '/oms/product-process/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue index ca73045..5adf6d5 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue @@ -184,7 +184,7 @@ const loginData = reactive({ captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE, tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE, loginForm: { - tenantName: '', + tenantName: '芋道源码', username: '', password: '', captchaVerification: '', diff --git a/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts b/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts index 24f275e..12c027d 100644 --- a/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts +++ b/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts @@ -103,6 +103,10 @@ export const SaleOrderApi = { // 更新分录数据 updateOrderEntrys: async (data: SaleOrderVO) => { return await request.put({ url: `/oms/sale-order/update-entrys`, data }) - } + }, + // 下单 + placeOrder: async (data: any) => { + return await request.post({ url: `/front/oms/sale-order/placeOrder`, data }) + }, } diff --git a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue index 50d550b..c96ffca 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue @@ -129,7 +129,6 @@ const that = reactive({ selectRow:[], queryInfo:{ productTypeId: null, - } }) @@ -139,12 +138,16 @@ const getLabel = (id)=>{ const res = that.typeList.find(item=>item.id === id); return res ? res.label : id } -const openDialog = () => { +const openDialog = (filter = {}) => { + that.queryInfo = { + ...that.queryInfo, + ...filter + } updateVisible(true); if(that.typeList.length === 0 ){ ProductTypeApi.getProductTypePage({ pageNo: 1, - pageSize: 100 + pageSize: 100, }).then(res=>{ that.typeList = res.list }) diff --git a/hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts b/hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts new file mode 100644 index 0000000..f82edc5 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts @@ -0,0 +1,2 @@ + +export const STEP0_FINISH:string = 'step0finish' diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue index fa3c234..a754277 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue @@ -36,12 +36,16 @@ @@ -52,15 +56,41 @@ From 4012c531160de139d896bfc9475b947606787a2a Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Tue, 8 Oct 2024 23:46:48 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=85=B3=E8=81=94=20=E9=94=80=E5=94=AE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../saleordersku/SaleOrderSkuDO.java | 4 +- .../saleorder/SaleOrderServiceImpl.java | 2 + ...售订单产品属性表-新增销售相关订单字段.sql | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 sql/mysql/20241008/销售订单产品属性表-新增销售相关订单字段.sql diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java index 480ac57..af06fa6 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java @@ -43,11 +43,11 @@ public class SaleOrderSkuDO extends BaseDO { /** * 销售订单id oms_saleorder */ - private String saleOrderId; + private Long saleOrderId; /** * 产品id oms_product_info */ - private String productId; + private Long productId; /** * 数量 */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index d925e46..c9eb700 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -483,8 +483,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { for (SaleOrderSkuDTO saleOrderSkuDTO : productSkuList) { SaleOrderSkuDO saleOrderSkuDO = new SaleOrderSkuDO(); BeanUtil.copyProperties(saleOrderSkuDTO,saleOrderSkuDO); + saleOrderSkuDO.setSaleOrderId(order.getId()); saleOrderSkuDO.setEntryId(entry.getId()); saleOrderSkuDO.setId(FuncUtil.getNextId()); + skuList.add(saleOrderSkuDO); } diff --git a/sql/mysql/20241008/销售订单产品属性表-新增销售相关订单字段.sql b/sql/mysql/20241008/销售订单产品属性表-新增销售相关订单字段.sql new file mode 100644 index 0000000..3d89e55 --- /dev/null +++ b/sql/mysql/20241008/销售订单产品属性表-新增销售相关订单字段.sql @@ -0,0 +1,40 @@ +-- 新增字段 +ALTER TABLE oms_saleorder_entry ADD COLUMN `delivery_date` DATETIME DEFAULT NULL COMMENT '交货日期'; + +ALTER TABLE oms_saleorder ADD COLUMN `order_code` VARCHAR(64) DEFAULT NULL COMMENT '订单号'; +ALTER TABLE oms_saleorder ADD COLUMN `contact_name` VARCHAR(128) DEFAULT NULL COMMENT '联系人名称'; +ALTER TABLE oms_saleorder ADD COLUMN `tel` VARCHAR(64) DEFAULT NULL COMMENT '固定电话'; +ALTER TABLE oms_saleorder ADD COLUMN `contract_code` VARCHAR(64) DEFAULT NULL COMMENT '合同编码'; +ALTER TABLE oms_saleorder ADD COLUMN `retailer_code` VARCHAR(64) DEFAULT NULL COMMENT '零售商单号'; +ALTER TABLE oms_saleorder ADD COLUMN `invoice_address` VARCHAR(512) DEFAULT NULL COMMENT '发票地址'; +ALTER TABLE oms_saleorder ADD COLUMN `brand_id` BIGINT(19) DEFAULT NULL COMMENT '品牌 id'; +ALTER TABLE oms_saleorder ADD COLUMN `is_batch` BIT(1) DEFAULT 0 COMMENT '是否分批交货 0否 1分批交货'; + + + DROP TABLE IF EXISTS oms_sale_order_sku; +CREATE TABLE oms_sale_order_sku( + id BIGINT(19) NOT NULL AUTO_INCREMENT COMMENT 'id' , + entry_id VARCHAR(32) COMMENT '销售订单分表id oms_saleorder_entry' , + item_key VARCHAR(32) COMMENT '数据key' , + sale_order_id VARCHAR(32) COMMENT '销售订单id oms_saleorder' , + product_id VARCHAR(512) COMMENT '产品id oms_product_info' , + order_qty INT COMMENT '数量' , + draft_design_id BIGINT(19) COMMENT '设计稿id oms_draft_design_data' , + width DECIMAL(13,4) COMMENT '设计稿宽' , + height DECIMAL(13,4) COMMENT '设计稿高' , + preview_image longtext COMMENT '预览图' , + prop_info longtext COMMENT '动态属性 json动态属性' , + spec_info VARCHAR(3072) COMMENT '规格 json完整信息' , + spec_size_width DECIMAL(13,4) COMMENT '宽(mm)' , + spec_size_height DECIMAL(13,4) COMMENT '高(mm)' , + spec_size_thk DECIMAL(13,4) COMMENT '厚度(mm)' , + spec_material VARCHAR(512) COMMENT '材质' , + main_color VARCHAR(128) COMMENT '主色风格' , + creator VARCHAR(64) COMMENT '创建者' , + create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , + updater VARCHAR(64) COMMENT '更新者' , + update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' , + deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除' , + tenant_id BIGINT(19) NOT NULL COMMENT '租户编号' , + PRIMARY KEY (id) +) COMMENT = '销售订单产品属性表 '; From 7b3dbb71ca5a18edc73f12033afab4a82f076cb2 Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Wed, 9 Oct 2024 00:51:42 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E8=B0=83=E8=AF=95=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=AE=BF=E9=97=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/infra/framework/file/core/utils/FileTypeUtils.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java b/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java index 1a9cef2..72a150b 100644 --- a/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java +++ b/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java @@ -59,6 +59,8 @@ public class FileTypeUtils { * @param content 附件内容 */ public static void writeAttachment(HttpServletResponse response, String filename, byte[] content) throws IOException { + System.out.println("filename@@"+filename); + System.out.println("filename@@length"+content.length); // 设置 header 和 contentType response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); String contentType = getMineType(content, filename); @@ -69,6 +71,7 @@ public class FileTypeUtils { response.setHeader("Content-Range", String.valueOf(content.length - 1)); response.setHeader("Accept-Ranges", "bytes"); } + if (contentType.startsWith("image/")) { // 设置缓存 response.setHeader("Cache-Control", "max-age=604800"); From 0828d7376b452b5e34f3466845122c303ec9d769 Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Wed, 9 Oct 2024 09:40:46 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E7=A8=BF=E4=BB=B6?= =?UTF-8?q?=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/core/utils/FileTypeUtils.java | 2 -- .../DraftDesign/components/DesignPropEdit.vue | 21 ++++++++++++- .../DraftDesign/components/DesignPropEdit.vue | 31 ++++++++++++------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java b/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java index 72a150b..82d3259 100644 --- a/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java +++ b/hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn/hangtag/module/infra/framework/file/core/utils/FileTypeUtils.java @@ -59,8 +59,6 @@ public class FileTypeUtils { * @param content 附件内容 */ public static void writeAttachment(HttpServletResponse response, String filename, byte[] content) throws IOException { - System.out.println("filename@@"+filename); - System.out.println("filename@@length"+content.length); // 设置 header 和 contentType response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); String contentType = getMineType(content, filename); diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue index 84ecb79..d67f4c6 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue @@ -102,7 +102,26 @@ size="large" style="min-width: 280px;width: 100%" /> - +
+
+ + +
占比
+
+ + + + +
%
+
+
+
+
diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue index 2196d1e..d67f4c6 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue @@ -102,7 +102,26 @@ size="large" style="min-width: 280px;width: 100%" /> - +
+
+ + +
占比
+
+ + + + +
%
+
+
+
+
@@ -599,13 +618,6 @@ const changeType = () => { previewByDraftDesignId(that.draftDesignId, that.propInfo) } const getPropInfo = () => { - let draftDesignInfo = {}; - for (let i = 0; i < that.draftDesignList.length; i++) { - if (that.draftDesignList[i].id === that.draftDesignId) { - draftDesignInfo = that.draftDesignList[i]; - break; - } - } if (that.changeCount > 0) { return new Promise((resolve) => { draftDesignEditRef.value.init(false, that.pageConfig, that.data, that.propInfo).then(() => { @@ -613,14 +625,12 @@ const getPropInfo = () => { // 成功后再获取图片 draftDesignEditRef.value.toPngUrl((url) => { that.previewData = url - const info = draftDesignEditRef.value.getPropInfo(); resolve({ draftDesignData: draftDesignEditRef.value.getJson(), propOrderByList: info.propOrderByList, // 设计稿id draftDesignId: that.draftDesignId, - draftDesignInfo: draftDesignInfo, previewImage: that.previewData, propInfo: that.propInfo }) @@ -643,7 +653,6 @@ const getPropInfo = () => { propOrderByList: info.propOrderByList, // 设计稿id draftDesignId: that.draftDesignId, - draftDesignInfo: draftDesignInfo, previewImage: that.previewData, propInfo: that.propInfo }) From 932fbf90156557de61186db7a28cb095b3b5401a Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Wed, 9 Oct 2024 10:15:53 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E7=A8=BF=E4=BB=B6?= =?UTF-8?q?=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/DraftDesign/components/DesignPropEdit.vue | 9 ++++++++- .../components/DraftDesign/components/DesignPropEdit.vue | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue index d67f4c6..4bf1430 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/DraftDesign/components/DesignPropEdit.vue @@ -394,7 +394,14 @@ const changeData = (index: number, key: string) => { for (let i = 0; i < that.propInfo[key].dataInfo.length; i++) { for (let j = 0; j < mapping.length; j++) { if (that.propInfo[key].dataInfo[i].locale === mapping[j].locale) { - that.propInfo[key].dataInfo[i].label = mapping[j].value + + let str = that.propInfo[key].dataInfo[0].ratio; + if (str === null || str === undefined || str === -1) { + str = '' + } + const value = `${mapping[j].value}`.replaceAll('${r}', str) + console.log("value",value) + that.propInfo[key].dataInfo[i].label = value break; } } diff --git a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue index d67f4c6..4bf1430 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/DraftDesign/components/DesignPropEdit.vue @@ -394,7 +394,14 @@ const changeData = (index: number, key: string) => { for (let i = 0; i < that.propInfo[key].dataInfo.length; i++) { for (let j = 0; j < mapping.length; j++) { if (that.propInfo[key].dataInfo[i].locale === mapping[j].locale) { - that.propInfo[key].dataInfo[i].label = mapping[j].value + + let str = that.propInfo[key].dataInfo[0].ratio; + if (str === null || str === undefined || str === -1) { + str = '' + } + const value = `${mapping[j].value}`.replaceAll('${r}', str) + console.log("value",value) + that.propInfo[key].dataInfo[i].label = value break; } } From 5e13575dd30cd08b04f6b8367192a2e8fae3d117 Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Wed, 9 Oct 2024 20:52:39 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=9B=9E=E6=98=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dialog/src/BrandDataListDialog/index.vue | 40 +++++++++------ .../src/DraftDesignDataListDialog/index.vue | 47 ++++++++++------- .../src/ProductTypeDataListDialog/index.vue | 50 +++++++++++-------- .../views/oms/productinfo/ProductInfoForm.vue | 5 +- 4 files changed, 84 insertions(+), 58 deletions(-) diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/BrandDataListDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/BrandDataListDialog/index.vue index 6b216e2..177ce3a 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/BrandDataListDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/BrandDataListDialog/index.vue @@ -109,7 +109,7 @@ const dialogTitle = ref('设计稿件') // 弹窗的标题 const props = defineProps({ modelValue: { - type: String, + type: [String,Number], required: true }, dataKey: { @@ -165,23 +165,11 @@ const viewDetails = () => { openDialog(); } } -// 用监听属性变化无其他意义 -const tmp = computed(()=>{ - setTimeout(()=>{ - that.inputVal = toStr(props.modelValue,that.inputVal) - if (that.inputVal) { - initInput(); - } - },100) - return '' -},{ - deep: true -}) -const toStr = (data: any) => { +const toStr = (data: any,def = '') => { if (data !== null && data !== undefined) { return `${data}` } - return data + return def } let map = new Map(); const initInput = async () => { @@ -211,9 +199,31 @@ const initInput = async () => { showValue: that.showValue }) } + +// 用监听属性变化无其他意义 +const tmp = computed(()=>{ + setTimeout(()=>{ + that.inputVal = toStr(props.modelValue,that.inputVal) + if (that.inputVal) { + initInput(); + } + },100) + return '' +},{ + deep: true +}) + watch(() => props.visible, (newVal) => { that.visible = newVal; }) +watch(() => props.modelValue, (newVal)=>{ + that.inputVal = toStr(newVal,'') + if (that.inputVal) { + initInput(); + } +},{ + immediate: true +}) const clearData = () => { that.inputVal = ''; that.showValue = ''; diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignDataListDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignDataListDialog/index.vue index 89d0e49..fec4f70 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignDataListDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/DraftDesignDataListDialog/index.vue @@ -18,7 +18,7 @@
- {{tmp}} + {{ tmp }} { } console.log("viewDetails", viewDetails) } -// 用监听属性变化无其他意义 -const tmp = computed(()=>{ - setTimeout(()=>{ - that.inputVal = toStr(props.modelValue,that.inputVal) - if (that.inputVal) { - initInput(); - } - },100) - return '' -},{ - deep: true -}) - -const toStr = (data: any) => { +const toStr = (data: any, def = '') => { if (data !== null && data !== undefined) { return `${data}` } - return data + return def } + let map = new Map(); const initInput = async () => { const dataKey = that.inputVal + ',' + props.dataKey + ',' + props.showKey + ',' + props.multiple; @@ -218,6 +206,27 @@ watch(() => props.visible, (newVal) => { that.visible = newVal; }) + +// 用监听属性变化无其他意义 +const tmp = computed(() => { + setTimeout(() => { + that.inputVal = toStr(props.modelValue, that.inputVal) + if (that.inputVal) { + initInput(); + } + }, 100) + return '' +}, { + deep: true +}) +watch(() => props.modelValue, (newVal) => { + that.inputVal = toStr(newVal, '') + if (that.inputVal) { + initInput(); + } +}, { + immediate: true +}) const clearData = () => { that.inputVal = ''; that.showValue = ''; @@ -237,12 +246,12 @@ const submit = () => { updateVisible(false) } const updateValue = () => { - console.log("that.inputVal",that.inputVal) + console.log("that.inputVal", that.inputVal) emit("update:modelValue", that.inputVal) } // const selectionChange = (row) => { - console.log("row",row) + console.log("row", row) if (row && row.length > 0) { if (props.multiple) { that.inputVal = row.map(item => item[props.dataKey || 'id']).join(',') diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductTypeDataListDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductTypeDataListDialog/index.vue index a0ce183..51813a4 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductTypeDataListDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductTypeDataListDialog/index.vue @@ -109,7 +109,7 @@ const dialogTitle = ref('设计稿件') // 弹窗的标题 const props = defineProps({ modelValue: { - type: [String], + type: [String,Number], required: true }, dataKey: { @@ -154,7 +154,12 @@ const that = reactive({ showValue: '', visible: false, }) - +const toStr = (data: any, def = '') => { + if (data !== null && data !== undefined) { + return `${data}` + } + return def +} const openDialog = () => { updateVisible(true); } @@ -164,26 +169,6 @@ const viewDetails = () => { } else { openDialog(); } - console.log("viewDetails", viewDetails) -} -// 用监听属性变化无其他意义 -const tmp = computed(()=>{ - setTimeout(()=>{ - that.inputVal = toStr(props.modelValue,that.inputVal) - if (that.inputVal) { - initInput(); - } - },100) - return '' -},{ - deep: true -}) - -const toStr = (data: any) => { - if (data !== null && data !== undefined) { - return `${data}` - } - return data } let map = new Map(); const initInput = async () => { @@ -217,6 +202,27 @@ watch(() => props.visible, (newVal) => { that.visible = newVal; }) + +watch(() => props.modelValue, (newVal)=>{ + that.inputVal = toStr(newVal,'') + if (that.inputVal) { + initInput(); + } +},{ + immediate: true +}) +// 用监听属性变化无其他意义 +const tmp = computed(()=>{ + setTimeout(()=>{ + that.inputVal = toStr(props.modelValue,that.inputVal) + if (that.inputVal) { + initInput(); + } + },100) + return '' +},{deep: true}) + + const clearData = () => { that.inputVal = ''; that.showValue = ''; diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue index 92a533d..e931688 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue @@ -81,7 +81,7 @@ - + @@ -424,7 +424,7 @@ const submitForm = async () => { return; } countInfo[key] = 1; - ids.push(id as string); + ids.push(id); } const data = formData.value; @@ -489,6 +489,7 @@ const addProcessRow = () => { /** 重置表单 */ const resetForm = () => { activeName.value = 'base' + that.updateProcess = false; formData.value = { id: undefined, code: undefined, From 20c6ca8bebaaace79f40d9b12bcd5233aeb477f6 Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Thu, 10 Oct 2024 19:22:56 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E5=85=81=E8=AE=B8=E6=8B=96=E5=AE=BD=EF=BC=8C?= =?UTF-8?q?=E9=9D=9E=E5=BF=85=E8=A6=81=E5=AD=97=E6=AE=B5=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ProductInfoListDialog/index.vue | 2 +- .../ProductTypeDataListDialog/config.data.ts | 1 + .../src/components/Table/src/Table.vue | 5 +++ .../base/producttype/ProductTypeForm.vue | 11 +----- .../src/views/base/producttype/index.vue | 13 ------- .../src/views/oms/brand/BrandForm.vue | 16 +-------- .../src/views/oms/brand/index.vue | 34 +++++-------------- .../src/views/oms/draftdesigndata/index.vue | 14 ++------ .../src/views/oms/productcareitem/index.vue | 27 ++------------- .../src/views/oms/productinfo/index.vue | 11 ++---- .../components/SaleContractEntryForm.vue | 2 +- .../src/views/system/codingrules/index.vue | 9 +---- .../src/components/Table/src/Table.vue | 5 +++ 13 files changed, 31 insertions(+), 119 deletions(-) diff --git a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue index be83138..035650e 100644 --- a/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/components/Dialog/src/ProductInfoListDialog/index.vue @@ -95,7 +95,7 @@ \ No newline at end of file + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/system/codingrules/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/system/codingrules/index.vue index 0318984..75fffb3 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/system/codingrules/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/system/codingrules/index.vue @@ -67,13 +67,6 @@ -