From 778968620e9cc887774378d99b8675d400244567 Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Mon, 12 Aug 2024 23:44:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E7=A8=BF=E4=BB=B6?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/oms/enums/ErrorCodeConstants.java | 4 +- .../DraftDesignDataController.java | 95 +++++++ .../vo/DraftDesignDataPageReqVO.java | 49 ++++ .../vo/DraftDesignDataRespVO.java | 62 +++++ .../vo/DraftDesignDataSaveReqVO.java | 43 +++ .../draftdesigndata/DraftDesignDataDO.java | 69 +++++ .../DraftDesignDataMapper.java | 35 +++ .../DraftDesignDataService.java | 56 ++++ .../DraftDesignDataServiceImpl.java | 140 ++++++++++ .../draftdesigndata/DraftDesignDataMapper.xml | 12 + .../DraftDesignDataServiceImplTest.java | 166 ++++++++++++ .../src/api/oms/draftdesigndata/index.ts | 48 ++++ .../DraftDesign/components/layout/index.vue | 7 + .../components/node/LineCellNode.vue | 4 +- .../components/node/ShapeCellNode.vue | 3 +- .../components/node/ShapeCircleNode.vue | 8 +- .../components/node/ShapeEllipseNode.vue | 7 +- .../components/node/ShapeFivePointedNode.vue | 8 +- .../components/node/ShapeImageNode.vue | 4 +- .../components/node/ShapeLozengeNode.vue | 4 +- .../components/node/ShapeRectNode.vue | 4 +- .../components/node/ShapeRightArrowNode.vue | 4 +- .../node/ShapeRightTriangleNode.vue | 4 +- .../components/node/ShapeTriangleNode.vue | 4 +- .../components/node/TextCellNode.vue | 4 +- .../src/components/DraftDesign/index.vue | 60 +++-- hangtag-ui/src/views/Home/Index.vue | 3 - .../draftdesigndata/DraftDesignDataForm.vue | 143 ++++++++++ .../oms/draftdesigndata/detials/index.vue | 181 +++++++++++++ .../src/views/oms/draftdesigndata/index.vue | 249 ++++++++++++++++++ .../system/codingrules/CodingRulesForm.vue | 80 +++--- .../codingrules/components/edit-item.vue | 75 +++--- sql/mysql/20240812/稿件模板管理.sql | 34 +++ 33 files changed, 1536 insertions(+), 133 deletions(-) create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/DraftDesignDataController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataPageReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataRespVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataSaveReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/draftdesigndata/DraftDesignDataDO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/draftdesigndata/DraftDesignDataMapper.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataService.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImpl.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/draftdesigndata/DraftDesignDataMapper.xml create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImplTest.java create mode 100644 hangtag-ui/src/api/oms/draftdesigndata/index.ts create mode 100644 hangtag-ui/src/views/oms/draftdesigndata/DraftDesignDataForm.vue create mode 100644 hangtag-ui/src/views/oms/draftdesigndata/detials/index.vue create mode 100644 hangtag-ui/src/views/oms/draftdesigndata/index.vue create mode 100644 sql/mysql/20240812/稿件模板管理.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 d611e52..4aa074b 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 @@ -7,6 +7,6 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro // ========== 产品资料 TODO 补充编号 ========== ErrorCode PRODUCT_INFO_NOT_EXISTS = new ErrorCode(3200, "产品资料 不存在"); ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(3300, "客户不存在"); - ErrorCode SHAPE_TEMPLATE_NOT_EXISTS = new ErrorCode(3200, "图形模板管理 不存在"); - + 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/draftdesigndata/DraftDesignDataController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/DraftDesignDataController.java new file mode 100644 index 0000000..c7be394 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/DraftDesignDataController.java @@ -0,0 +1,95 @@ +package cn.hangtag.module.oms.controller.admin.draftdesigndata; + +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.draftdesigndata.vo.*; +import cn.hangtag.module.oms.dal.dataobject.draftdesigndata.DraftDesignDataDO; +import cn.hangtag.module.oms.service.draftdesigndata.DraftDesignDataService; + +@Tag(name = "管理后台 - 稿件模板数据 ") +@RestController +@RequestMapping("/oms/draft-design-data") +@Validated +public class DraftDesignDataController { + + @Resource + private DraftDesignDataService draftDesignDataService; + + @PostMapping("/create") + @Operation(summary = "创建稿件模板数据 ") + @PreAuthorize("@ss.hasPermission('oms:draft-design-data:create')") + public CommonResult createDraftDesignData(@Valid @RequestBody DraftDesignDataSaveReqVO createReqVO) { + return success(draftDesignDataService.createDraftDesignData(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新稿件模板数据 ") + @PreAuthorize("@ss.hasPermission('oms:draft-design-data:update')") + public CommonResult updateDraftDesignData(@Valid @RequestBody DraftDesignDataSaveReqVO updateReqVO) { + draftDesignDataService.updateDraftDesignData(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除稿件模板数据 ") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oms:draft-design-data:delete')") + public CommonResult deleteDraftDesignData(@RequestParam("id") Long id) { + draftDesignDataService.deleteDraftDesignData(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得稿件模板数据 ") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('oms:draft-design-data:query')") + public CommonResult getDraftDesignData(@RequestParam("id") Long id) { + DraftDesignDataDO draftDesignData = draftDesignDataService.getDraftDesignData(id); + return success(BeanUtils.toBean(draftDesignData, DraftDesignDataRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得稿件模板数据 分页") + @PreAuthorize("@ss.hasPermission('oms:draft-design-data:query')") + public CommonResult> getDraftDesignDataPage(@Valid DraftDesignDataPageReqVO pageReqVO) { + PageResult pageResult = draftDesignDataService.getDraftDesignDataPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DraftDesignDataRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出稿件模板数据 Excel") + @PreAuthorize("@ss.hasPermission('oms:draft-design-data:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDraftDesignDataExcel(@Valid DraftDesignDataPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = draftDesignDataService.getDraftDesignDataPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "稿件模板数据 .xls", "数据", DraftDesignDataRespVO.class, + BeanUtils.toBean(list, DraftDesignDataRespVO.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/draftdesigndata/vo/DraftDesignDataPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataPageReqVO.java new file mode 100644 index 0000000..c92cd47 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataPageReqVO.java @@ -0,0 +1,49 @@ +package cn.hangtag.module.oms.controller.admin.draftdesigndata.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 DraftDesignDataPageReqVO extends PageParam { + + @Schema(description = "编码") + private String code; + + @Schema(description = "设计稿名称", example = "赵六") + private String name; + + @Schema(description = "作者") + private String author; + + @Schema(description = "版本") + private Integer version; + + @Schema(description = "语言标识 字典-language_locale") + private String locale; + + @Schema(description = "启用状态") + private Boolean enabled; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "稿件详情 json数据") + private String details; + + @Schema(description = "动态属性") + private String propDefault; + + @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/draftdesigndata/vo/DraftDesignDataRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataRespVO.java new file mode 100644 index 0000000..615bd14 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataRespVO.java @@ -0,0 +1,62 @@ +package cn.hangtag.module.oms.controller.admin.draftdesigndata.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.*; +import cn.hangtag.framework.excel.core.annotations.DictFormat; +import cn.hangtag.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 稿件模板数据 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DraftDesignDataRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1098") + @ExcelProperty("id") + private Long id; + + @Schema(description = "编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("编码") + private String code; + + @Schema(description = "设计稿名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("设计稿名称") + private String name; + + @Schema(description = "作者") + @ExcelProperty("作者") + private String author; + + @Schema(description = "版本") + @ExcelProperty("版本") + private Integer version; + + @Schema(description = "语言标识 字典-language_locale") + @ExcelProperty(value = "语言标识 字典-language_locale", converter = DictConvert.class) + @DictFormat("language_locale") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String locale; + + @Schema(description = "启用状态") + @ExcelProperty("启用状态") + private Boolean enabled; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "稿件详情 json数据") + @ExcelProperty("稿件详情 json数据") + private String details; + + @Schema(description = "动态属性") + @ExcelProperty("动态属性") + private String propDefault; + + @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/draftdesigndata/vo/DraftDesignDataSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataSaveReqVO.java new file mode 100644 index 0000000..a405cbc --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/draftdesigndata/vo/DraftDesignDataSaveReqVO.java @@ -0,0 +1,43 @@ +package cn.hangtag.module.oms.controller.admin.draftdesigndata.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 DraftDesignDataSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1098") + private Long id; + + @Schema(description = "编码", requiredMode = Schema.RequiredMode.REQUIRED) + private String code; + + @Schema(description = "设计稿名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "设计稿名称不能为空") + private String name; + + @Schema(description = "作者") + private String author; + + @Schema(description = "版本") + private Integer version; + + @Schema(description = "语言标识 字典-language_locale") + private String locale; + + @Schema(description = "启用状态") + private Boolean enabled; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "稿件详情 json数据") + private String details; + + @Schema(description = "动态属性") + private String propDefault; + +} \ 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/draftdesigndata/DraftDesignDataDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/draftdesigndata/DraftDesignDataDO.java new file mode 100644 index 0000000..764ba5e --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/draftdesigndata/DraftDesignDataDO.java @@ -0,0 +1,69 @@ +package cn.hangtag.module.oms.dal.dataobject.draftdesigndata; + +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 YuanFeng + */ +@TableName("oms_draft_design_data") +@KeySequence("oms_draft_design_data_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DraftDesignDataDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 编码 + */ + private String code; + /** + * 设计稿名称 + */ + private String name; + /** + * 作者 + */ + private String author; + /** + * 版本 + */ + private Integer version; + /** + * 语言标识 字典-language_locale + * + * 枚举 {@link TODO language_locale 对应的类} + */ + private String locale; + /** + * 启用状态 + */ + private Boolean enabled; + /** + * 备注 + */ + private String remark; + /** + * 稿件详情 json数据 + */ + private String details; + /** + * 动态属性 + */ + private String propDefault; + +} \ 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/draftdesigndata/DraftDesignDataMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/draftdesigndata/DraftDesignDataMapper.java new file mode 100644 index 0000000..02fba7b --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/draftdesigndata/DraftDesignDataMapper.java @@ -0,0 +1,35 @@ +package cn.hangtag.module.oms.dal.mysql.draftdesigndata; + +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.draftdesigndata.DraftDesignDataDO; +import org.apache.ibatis.annotations.Mapper; +import cn.hangtag.module.oms.controller.admin.draftdesigndata.vo.*; + +/** + * 稿件模板数据 Mapper + * + * @author YuanFeng + */ +@Mapper +public interface DraftDesignDataMapper extends BaseMapperX { + + default PageResult selectPage(DraftDesignDataPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DraftDesignDataDO::getCode, reqVO.getCode()) + .likeIfPresent(DraftDesignDataDO::getName, reqVO.getName()) + .likeIfPresent(DraftDesignDataDO::getAuthor, reqVO.getAuthor()) + .eqIfPresent(DraftDesignDataDO::getVersion, reqVO.getVersion()) + .eqIfPresent(DraftDesignDataDO::getLocale, reqVO.getLocale()) + .eqIfPresent(DraftDesignDataDO::getEnabled, reqVO.getEnabled()) + .eqIfPresent(DraftDesignDataDO::getRemark, reqVO.getRemark()) + .eqIfPresent(DraftDesignDataDO::getDetails, reqVO.getDetails()) + .eqIfPresent(DraftDesignDataDO::getPropDefault, reqVO.getPropDefault()) + .betweenIfPresent(DraftDesignDataDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DraftDesignDataDO::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/draftdesigndata/DraftDesignDataService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataService.java new file mode 100644 index 0000000..17a6167 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataService.java @@ -0,0 +1,56 @@ +package cn.hangtag.module.oms.service.draftdesigndata; + +import java.util.*; +import javax.validation.*; +import cn.hangtag.module.oms.controller.admin.draftdesigndata.vo.*; +import cn.hangtag.module.oms.dal.dataobject.draftdesigndata.DraftDesignDataDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; + +/** + * 稿件模板数据 Service 接口 + * + * @author YuanFeng + */ +public interface DraftDesignDataService { + + /** + * 创建稿件模板数据 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDraftDesignData(@Valid DraftDesignDataSaveReqVO createReqVO); + + /** + * 更新稿件模板数据 + * + * @param updateReqVO 更新信息 + */ + void updateDraftDesignData(@Valid DraftDesignDataSaveReqVO updateReqVO); + + /** + * 删除稿件模板数据 + * + * @param id 编号 + */ + void deleteDraftDesignData(Long id); + + /** + * 获得稿件模板数据 + * + * @param id 编号 + * @return 稿件模板数据 + */ + DraftDesignDataDO getDraftDesignData(Long id); + + /** + * 获得稿件模板数据 分页 + * + * @param pageReqVO 分页查询 + * @return 稿件模板数据 分页 + */ + PageResult getDraftDesignDataPage(DraftDesignDataPageReqVO pageReqVO); + + String getNewCode(); +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImpl.java new file mode 100644 index 0000000..f2bc9e9 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImpl.java @@ -0,0 +1,140 @@ +package cn.hangtag.module.oms.service.draftdesigndata; + +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.dal.dataobject.brand.BrandDO; +import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +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.draftdesigndata.vo.*; +import cn.hangtag.module.oms.dal.dataobject.draftdesigndata.DraftDesignDataDO; +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.draftdesigndata.DraftDesignDataMapper; + +import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; + +/** + * 稿件模板数据 Service 实现类 + * + * @author YuanFeng + */ +@Service +@Validated +@Slf4j +public class DraftDesignDataServiceImpl implements DraftDesignDataService { + + @Resource + private DraftDesignDataMapper draftDesignDataMapper; + + @Override + public Long createDraftDesignData(DraftDesignDataSaveReqVO createReqVO) { + // 插入 + DraftDesignDataDO draftDesignData = BeanUtils.toBean(createReqVO, DraftDesignDataDO.class); + String code = draftDesignData.getCode(); + if(FuncUtil.isNotEmpty(code)){ + checkCode(draftDesignData.getId(),code); + }else { + draftDesignData.setCode(getNewCode()); + } + draftDesignData.setVersion(1); + draftDesignDataMapper.insert(draftDesignData); + // 返回 + return draftDesignData.getId(); + } + + @Override + public void updateDraftDesignData(DraftDesignDataSaveReqVO updateReqVO) { + // 校验存在 + DraftDesignDataDO designDataDO = draftDesignDataMapper.selectById(updateReqVO.getId()); + if(designDataDO == null){ + throw exception(DRAFT_DESIGN_DATA_NOT_EXISTS); + } + Integer version = designDataDO.getVersion(); + // 更新 + DraftDesignDataDO updateObj = BeanUtils.toBean(updateReqVO, DraftDesignDataDO.class); + String code = updateObj.getCode(); + if(FuncUtil.isNotEmpty(code)){ + checkCode(updateObj.getId(),code); + }else { + updateObj.setCode(getNewCode()); + } + updateObj.setVersion(version+1); + draftDesignDataMapper.updateById(updateObj); + } + + @Override + public void deleteDraftDesignData(Long id) { + // 校验存在 + validateDraftDesignDataExists(id); + // 删除 + draftDesignDataMapper.deleteById(id); + } + + private void validateDraftDesignDataExists(Long id) { + if (draftDesignDataMapper.selectById(id) == null) { + throw exception(DRAFT_DESIGN_DATA_NOT_EXISTS); + } + } + + @Override + public DraftDesignDataDO getDraftDesignData(Long id) { + return draftDesignDataMapper.selectById(id); + } + + @Override + public PageResult getDraftDesignDataPage(DraftDesignDataPageReqVO pageReqVO) { + return draftDesignDataMapper.selectPage(pageReqVO); + } + + @Override + public String getNewCode() { + String s = ""; + int count = 10; + while (true){ + count --; + try { + s = CodingRulesUtils.generateCode(3L, 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(DraftDesignDataDO::getId,DraftDesignDataDO::getCode, BaseDO::getDeleted); + lambdaQueryWrapper.eq(DraftDesignDataDO::getCode, code); + lambdaQueryWrapper.eq(DraftDesignDataDO::getDeleted,false); + List dos = draftDesignDataMapper.selectList(lambdaQueryWrapper); + if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { + for (DraftDesignDataDO aDo : dos) { + // 出现重复并当前id 不一致 + if(!FuncUtil.equals(aDo.getId(), id)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + } + } + } + } +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/draftdesigndata/DraftDesignDataMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/draftdesigndata/DraftDesignDataMapper.xml new file mode 100644 index 0000000..7c275a9 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/draftdesigndata/DraftDesignDataMapper.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/draftdesigndata/DraftDesignDataServiceImplTest.java b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImplTest.java new file mode 100644 index 0000000..ecba261 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/draftdesigndata/DraftDesignDataServiceImplTest.java @@ -0,0 +1,166 @@ +package cn.hangtag.module.oms.service.draftdesigndata; + +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.draftdesigndata.vo.*; +import cn.hangtag.module.oms.dal.dataobject.draftdesigndata.DraftDesignDataDO; +import cn.hangtag.module.oms.dal.mysql.draftdesigndata.DraftDesignDataMapper; +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 DraftDesignDataServiceImpl} 的单元测试类 + * + * @author YuanFeng + */ +@Import(DraftDesignDataServiceImpl.class) +public class DraftDesignDataServiceImplTest extends BaseDbUnitTest { + + @Resource + private DraftDesignDataServiceImpl draftDesignDataService; + + @Resource + private DraftDesignDataMapper draftDesignDataMapper; + + @Test + public void testCreateDraftDesignData_success() { + // 准备参数 + DraftDesignDataSaveReqVO createReqVO = randomPojo(DraftDesignDataSaveReqVO.class).setId(null); + + // 调用 + Long draftDesignDataId = draftDesignDataService.createDraftDesignData(createReqVO); + // 断言 + assertNotNull(draftDesignDataId); + // 校验记录的属性是否正确 + DraftDesignDataDO draftDesignData = draftDesignDataMapper.selectById(draftDesignDataId); + assertPojoEquals(createReqVO, draftDesignData, "id"); + } + + @Test + public void testUpdateDraftDesignData_success() { + // mock 数据 + DraftDesignDataDO dbDraftDesignData = randomPojo(DraftDesignDataDO.class); + draftDesignDataMapper.insert(dbDraftDesignData);// @Sql: 先插入出一条存在的数据 + // 准备参数 + DraftDesignDataSaveReqVO updateReqVO = randomPojo(DraftDesignDataSaveReqVO.class, o -> { + o.setId(dbDraftDesignData.getId()); // 设置更新的 ID + }); + + // 调用 + draftDesignDataService.updateDraftDesignData(updateReqVO); + // 校验是否更新正确 + DraftDesignDataDO draftDesignData = draftDesignDataMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, draftDesignData); + } + + @Test + public void testUpdateDraftDesignData_notExists() { + // 准备参数 + DraftDesignDataSaveReqVO updateReqVO = randomPojo(DraftDesignDataSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> draftDesignDataService.updateDraftDesignData(updateReqVO), DRAFT_DESIGN_DATA_NOT_EXISTS); + } + + @Test + public void testDeleteDraftDesignData_success() { + // mock 数据 + DraftDesignDataDO dbDraftDesignData = randomPojo(DraftDesignDataDO.class); + draftDesignDataMapper.insert(dbDraftDesignData);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbDraftDesignData.getId(); + + // 调用 + draftDesignDataService.deleteDraftDesignData(id); + // 校验数据不存在了 + assertNull(draftDesignDataMapper.selectById(id)); + } + + @Test + public void testDeleteDraftDesignData_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> draftDesignDataService.deleteDraftDesignData(id), DRAFT_DESIGN_DATA_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetDraftDesignDataPage() { + // mock 数据 + DraftDesignDataDO dbDraftDesignData = randomPojo(DraftDesignDataDO.class, o -> { // 等会查询到 + o.setCode(null); + o.setName(null); + o.setAuthor(null); + o.setVersion(null); + o.setLocale(null); + o.setEnabled(null); + o.setRemark(null); + o.setDetails(null); + o.setPropDefault(null); + o.setCreateTime(null); + }); + draftDesignDataMapper.insert(dbDraftDesignData); + // 测试 code 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setCode(null))); + // 测试 name 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setName(null))); + // 测试 author 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setAuthor(null))); + // 测试 version 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setVersion(null))); + // 测试 locale 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setLocale(null))); + // 测试 enabled 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setEnabled(null))); + // 测试 remark 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setRemark(null))); + // 测试 details 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setDetails(null))); + // 测试 propDefault 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setPropDefault(null))); + // 测试 createTime 不匹配 + draftDesignDataMapper.insert(cloneIgnoreId(dbDraftDesignData, o -> o.setCreateTime(null))); + // 准备参数 + DraftDesignDataPageReqVO reqVO = new DraftDesignDataPageReqVO(); + reqVO.setCode(null); + reqVO.setName(null); + reqVO.setAuthor(null); + reqVO.setVersion(null); + reqVO.setLocale(null); + reqVO.setEnabled(null); + reqVO.setRemark(null); + reqVO.setDetails(null); + reqVO.setPropDefault(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = draftDesignDataService.getDraftDesignDataPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbDraftDesignData, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/hangtag-ui/src/api/oms/draftdesigndata/index.ts b/hangtag-ui/src/api/oms/draftdesigndata/index.ts new file mode 100644 index 0000000..3e27ae2 --- /dev/null +++ b/hangtag-ui/src/api/oms/draftdesigndata/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +// 稿件模板数据 VO +export interface DraftDesignDataVO { + id: number // id + code: string // 编码 + name: string // 设计稿名称 + author: string // 作者 + version: number // 版本 + locale: string // 语言标识 字典-language_locale + enabled: boolean // 启用状态 + remark: string // 备注 + details: string // 稿件详情 json数据 + propDefault: string // 动态属性 +} + +// 稿件模板数据 API +export const DraftDesignDataApi = { + // 查询稿件模板数据 分页 + getDraftDesignDataPage: async (params: any) => { + return await request.get({ url: `/oms/draft-design-data/page`, params }) + }, + + // 查询稿件模板数据 详情 + getDraftDesignData: async (id: number) => { + return await request.get({ url: `/oms/draft-design-data/get?id=` + id }) + }, + + // 新增稿件模板数据 + createDraftDesignData: async (data: DraftDesignDataVO) => { + return await request.post({ url: `/oms/draft-design-data/create`, data }) + }, + + // 修改稿件模板数据 + updateDraftDesignData: async (data: DraftDesignDataVO) => { + return await request.put({ url: `/oms/draft-design-data/update`, data }) + }, + + // 删除稿件模板数据 + deleteDraftDesignData: async (id: number) => { + return await request.delete({ url: `/oms/draft-design-data/delete?id=` + id }) + }, + + // 导出稿件模板数据 Excel + exportDraftDesignData: async (params) => { + return await request.download({ url: `/oms/draft-design-data/export-excel`, params }) + }, +} diff --git a/hangtag-ui/src/components/DraftDesign/components/layout/index.vue b/hangtag-ui/src/components/DraftDesign/components/layout/index.vue index cc79a76..1383e8d 100644 --- a/hangtag-ui/src/components/DraftDesign/components/layout/index.vue +++ b/hangtag-ui/src/components/DraftDesign/components/layout/index.vue @@ -188,6 +188,13 @@ +
+ + + +
{ - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeCircleNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeCircleNode.vue index f073c94..9d8ee55 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeCircleNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeCircleNode.vue @@ -140,12 +140,11 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) this.setCellInfo(current) }) @@ -182,7 +181,7 @@ export default defineComponent({ // this.cellInfo.showInput = val }, changSize(size: any) { - console.log("cellInfo.label", this.cellInfo.label) + this.sizeWInfo.width = size.width; this.sizeWInfo.height = size.height; this.minSize = Math.min(size.height, size.width) @@ -195,9 +194,6 @@ export default defineComponent({ } else if (s >= 1000) { s = 1000 } - - // this.nodeInfo.store.data.size.width = size.width; - console.log(" this.nodeInfo.width", this.nodeInfo) this.fontSize = s; this.changeFontSize(); }, diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeEllipseNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeEllipseNode.vue index 1e05760..f877c72 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeEllipseNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeEllipseNode.vue @@ -149,13 +149,10 @@ export default defineComponent({ mounted() { const node = (this as any).getNode() this.nodeInfo = node - - console.log("自定义节点", node.data) if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) this.setCellInfo(current) }) @@ -192,7 +189,7 @@ export default defineComponent({ // this.cellInfo.showInput = val }, changSize(size: any) { - console.log("cellInfo.label", this.cellInfo.label) + this.sizeWInfo.width = size.width; this.sizeWInfo.height = size.height; this.minSize = Math.min(size.height, size.width) @@ -206,8 +203,6 @@ export default defineComponent({ s = 1000 } - // this.nodeInfo.store.data.size.width = size.width; - console.log(" this.nodeInfo.width", this.nodeInfo) this.fontSize = s; this.changeFontSize(); }, diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeFivePointedNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeFivePointedNode.vue index 33500d2..e2ffadb 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeFivePointedNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeFivePointedNode.vue @@ -154,12 +154,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) @@ -196,7 +196,7 @@ export default defineComponent({ // this.cellInfo.showInput = val }, changSize(size: any) { - console.log("cellInfo.label", this.cellInfo.label) + this.sizeWInfo.width = size.width; this.sizeWInfo.height = size.height; this.minSize = Math.min(size.height, size.width) @@ -211,7 +211,6 @@ export default defineComponent({ } // this.nodeInfo.store.data.size.width = size.width; - console.log(" this.nodeInfo.width", this.nodeInfo) this.fontSize = s; this.changeFontSize(); }, @@ -226,7 +225,6 @@ export default defineComponent({ } } } - console.log("text##", info) this.cellInfo = mergeDeepObject({ showInput: false, id: nextId(), diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeImageNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeImageNode.vue index 8b58531..b9a6088 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeImageNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeImageNode.vue @@ -143,12 +143,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeLozengeNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeLozengeNode.vue index 47ea6c1..1750894 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeLozengeNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeLozengeNode.vue @@ -177,12 +177,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeRectNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeRectNode.vue index 305f900..12e9cc5 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeRectNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeRectNode.vue @@ -154,12 +154,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightArrowNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightArrowNode.vue index 215c7d3..7ba22b1 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightArrowNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightArrowNode.vue @@ -183,12 +183,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightTriangleNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightTriangleNode.vue index d2106ff..ed86739 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightTriangleNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeRightTriangleNode.vue @@ -167,12 +167,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/ShapeTriangleNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/ShapeTriangleNode.vue index 96df04d..3338a70 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/ShapeTriangleNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/ShapeTriangleNode.vue @@ -168,12 +168,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue index 5117f8b..f32fdb1 100644 --- a/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue +++ b/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue @@ -101,12 +101,12 @@ export default defineComponent({ const node = (this as any).getNode() this.nodeInfo = node - console.log("自定义节点", node.data) + if (node && node.data) { this.setCellInfo(node.data) } node.on('change:data', ({current}) => { - console.log("change:data", current) + this.setCellInfo(current) }) diff --git a/hangtag-ui/src/components/DraftDesign/index.vue b/hangtag-ui/src/components/DraftDesign/index.vue index 3bd97dd..3cbcfe3 100644 --- a/hangtag-ui/src/components/DraftDesign/index.vue +++ b/hangtag-ui/src/components/DraftDesign/index.vue @@ -159,6 +159,7 @@ register({ }) const TeleportContainer = defineComponent(getTeleport()); +const emit = defineEmits(["save"]) const {t} = useI18n() // 国际化 let graph: Graph = null let history = null @@ -407,6 +408,12 @@ const rightKeyMenu = computed(() => { return arr; }); + +const clearData = ()=>{ + if(graph){ + graph.fromJSON({}) + } +} /** * * @param isDesignMode @@ -441,7 +448,6 @@ const init = (isDesignMode: boolean, bgConfig: any, data = {}, propDataInfo = {} autoResize: false, propList: [], }, bgConfig) as any - let options = { ...graphOptions(that.containerId, !that.editState), ...that.pageConfig, @@ -941,23 +947,23 @@ const addDrawRuler = () => { }; onMounted(() => { - const r = localStorage.getItem("tem_data") - if (r) { - const conf = JSON.parse(r) - const test = { - g_kn7c4vzgf9a:{ - dataInfo: [ - { - url: '', - label: '100%聚酯纤维', - } - ] - } - } - init(true, conf.pageConfig, conf.data, test); - } else { - init(true, {}); - } + // const r = localStorage.getItem("tem_data") + // if (r) { + // const conf = JSON.parse(r) + // const test = { + // g_kn7c4vzgf9a:{ + // dataInfo: [ + // { + // url: '', + // label: '100%聚酯纤维', + // } + // ] + // } + // } + // init(true, conf.pageConfig, conf.data, test); + // } else { + // } + // init(true, {}); }) const btnEventHandler = { 'canUndo': (val) => { @@ -969,9 +975,18 @@ const btnEventHandler = { if (graph.canRedo()) { graph.redo() } - }, 'canSave': (val) => { - getJson() + }, + 'canSave': (val) => { + const data = getJson(); + emit("save",data); console.log("doSave") + }, + 'clearData': (val) => { + useMessage().confirm("是否清空数据?").then((res)=>{ + if(res){ + clearData() + } + }) } } const btnChange = (val) => { @@ -1310,6 +1325,11 @@ const submitProp = (data) => { that.pageConfig.propList.push(data) dynamicPropRef.value.updateVisible(false) } + +defineExpose({ + init, + clearData +})