Commit 930c5ec490066dfaf66674ada8ea197d39a2d443

Authored by YunaiV
1 parent 69a6aa25

BPM Form 表单的完善

Showing 22 changed files with 340 additions and 229 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/BpmFormController.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.form; 1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.form;
2 2
3 import cn.iocoder.yudao.adminserver.modules.bpm.convert.form.BpmFormConvert; 3 import cn.iocoder.yudao.adminserver.modules.bpm.convert.form.BpmFormConvert;
4 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmForm; 4 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.service.form.BpmFormService; 5 import cn.iocoder.yudao.adminserver.modules.bpm.service.form.BpmFormService;
6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.*; 6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.*;
7 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 7 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
8 import cn.iocoder.yudao.framework.common.pojo.PageResult; 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;  
10 -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;  
11 import io.swagger.annotations.Api; 9 import io.swagger.annotations.Api;
12 import io.swagger.annotations.ApiImplicitParam; 10 import io.swagger.annotations.ApiImplicitParam;
13 import io.swagger.annotations.ApiOperation; 11 import io.swagger.annotations.ApiOperation;
@@ -16,14 +14,11 @@ import org.springframework.validation.annotation.Validated; @@ -16,14 +14,11 @@ import org.springframework.validation.annotation.Validated;
16 import org.springframework.web.bind.annotation.*; 14 import org.springframework.web.bind.annotation.*;
17 15
18 import javax.annotation.Resource; 16 import javax.annotation.Resource;
19 -import javax.servlet.http.HttpServletResponse;  
20 import javax.validation.Valid; 17 import javax.validation.Valid;
21 -import java.io.IOException;  
22 import java.util.Collection; 18 import java.util.Collection;
23 import java.util.List; 19 import java.util.List;
24 20
25 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
26 -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;  
27 22
28 @Api(tags = "动态表单") 23 @Api(tags = "动态表单")
29 @RestController 24 @RestController
@@ -63,7 +58,7 @@ public class BpmFormController { @@ -63,7 +58,7 @@ public class BpmFormController {
63 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) 58 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
64 @PreAuthorize("@ss.hasPermission('bpm:form:query')") 59 @PreAuthorize("@ss.hasPermission('bpm:form:query')")
65 public CommonResult<BpmFormRespVO> getForm(@RequestParam("id") Long id) { 60 public CommonResult<BpmFormRespVO> getForm(@RequestParam("id") Long id) {
66 - BpmForm form = formService.getForm(id); 61 + BpmFormDO form = formService.getForm(id);
67 return success(BpmFormConvert.INSTANCE.convert(form)); 62 return success(BpmFormConvert.INSTANCE.convert(form));
68 } 63 }
69 64
@@ -72,7 +67,7 @@ public class BpmFormController { @@ -72,7 +67,7 @@ public class BpmFormController {
72 @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) 67 @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
73 @PreAuthorize("@ss.hasPermission('bpm:form:query')") 68 @PreAuthorize("@ss.hasPermission('bpm:form:query')")
74 public CommonResult<List<BpmFormRespVO>> getFormList(@RequestParam("ids") Collection<Long> ids) { 69 public CommonResult<List<BpmFormRespVO>> getFormList(@RequestParam("ids") Collection<Long> ids) {
75 - List<BpmForm> list = formService.getFormList(ids); 70 + List<BpmFormDO> list = formService.getFormList(ids);
76 return success(BpmFormConvert.INSTANCE.convertList(list)); 71 return success(BpmFormConvert.INSTANCE.convertList(list));
77 } 72 }
78 73
@@ -80,7 +75,7 @@ public class BpmFormController { @@ -80,7 +75,7 @@ public class BpmFormController {
80 @ApiOperation("获得动态表单分页") 75 @ApiOperation("获得动态表单分页")
81 @PreAuthorize("@ss.hasPermission('bpm:form:query')") 76 @PreAuthorize("@ss.hasPermission('bpm:form:query')")
82 public CommonResult<PageResult<BpmFormRespVO>> getFormPage(@Valid BpmFormPageReqVO pageVO) { 77 public CommonResult<PageResult<BpmFormRespVO>> getFormPage(@Valid BpmFormPageReqVO pageVO) {
83 - PageResult<BpmForm> pageResult = formService.getFormPage(pageVO); 78 + PageResult<BpmFormDO> pageResult = formService.getFormPage(pageVO);
84 return success(BpmFormConvert.INSTANCE.convertPage(pageResult)); 79 return success(BpmFormConvert.INSTANCE.convertPage(pageResult));
85 } 80 }
86 81
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormBaseVO.java
@@ -11,18 +11,15 @@ import javax.validation.constraints.*; @@ -11,18 +11,15 @@ import javax.validation.constraints.*;
11 @Data 11 @Data
12 public class BpmFormBaseVO { 12 public class BpmFormBaseVO {
13 13
14 - @ApiModelProperty(value = "表单名称", required = true) 14 + @ApiModelProperty(value = "表单名称", required = true, example = "芋道")
15 @NotNull(message = "表单名称不能为空") 15 @NotNull(message = "表单名称不能为空")
16 private String name; 16 private String name;
17 17
18 - @ApiModelProperty(value = "商户状态", required = true)  
19 - @NotNull(message = "商户状态不能为空") 18 + @ApiModelProperty(value = "表单状态", required = true, notes = "参见 CommonStatusEnum 枚举", example = "1")
  19 + @NotNull(message = "表单状态不能为空")
20 private Integer status; 20 private Integer status;
21 21
22 - @ApiModelProperty(value = "表单JSON")  
23 - private String formJson;  
24 -  
25 - @ApiModelProperty(value = "备注") 22 + @ApiModelProperty(value = "备注", example = "我是备注")
26 private String remark; 23 private String remark;
27 24
28 } 25 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormCreateReqVO.java
@@ -3,10 +3,21 @@ package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo; @@ -3,10 +3,21 @@ package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo;
3 import lombok.*; 3 import lombok.*;
4 import io.swagger.annotations.*; 4 import io.swagger.annotations.*;
5 5
  6 +import javax.validation.constraints.NotNull;
  7 +import java.util.List;
  8 +
6 @ApiModel("动态表单创建 Request VO") 9 @ApiModel("动态表单创建 Request VO")
7 @Data 10 @Data
8 @EqualsAndHashCode(callSuper = true) 11 @EqualsAndHashCode(callSuper = true)
9 @ToString(callSuper = true) 12 @ToString(callSuper = true)
10 public class BpmFormCreateReqVO extends BpmFormBaseVO { 13 public class BpmFormCreateReqVO extends BpmFormBaseVO {
11 14
  15 + @ApiModelProperty(value = "表单的配置", required = true, notes = "JSON 字符串")
  16 + @NotNull(message = "表单的配置不能为空")
  17 + private String conf;
  18 +
  19 + @ApiModelProperty(value = "表单项的数组", required = true, notes = "JSON 字符串的数组")
  20 + @NotNull(message = "表单项的数组不能为空")
  21 + private List<String> fields;
  22 +
12 } 23 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormExcelVO.java deleted
1 -package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo;  
2 -  
3 -import com.alibaba.excel.annotation.ExcelProperty;  
4 -import lombok.Data;  
5 -  
6 -import java.util.Date;  
7 -  
8 -/**  
9 - * 动态表单 Excel VO  
10 - *  
11 - * @author 芋艿  
12 - */  
13 -@Data  
14 -public class BpmFormExcelVO {  
15 -  
16 - @ExcelProperty("表单编号")  
17 - private Long id;  
18 -  
19 - @ExcelProperty("表单名称")  
20 - private String name;  
21 -  
22 - @ExcelProperty("商户状态")  
23 - private Integer status;  
24 -  
25 - @ExcelProperty("表单JSON")  
26 - private String formJson;  
27 -  
28 - @ExcelProperty("备注")  
29 - private String remark;  
30 -  
31 - @ExcelProperty("创建时间")  
32 - private Date createTime;  
33 -  
34 -}  
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormExportReqVO.java deleted
1 -package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo;  
2 -  
3 -import io.swagger.annotations.ApiModel;  
4 -import io.swagger.annotations.ApiModelProperty;  
5 -import lombok.Data;  
6 -  
7 -@ApiModel(value = "动态表单 Excel 导出 Request VO", description = "参数和 BpmFormPageReqVO 是一致的")  
8 -@Data  
9 -public class BpmFormExportReqVO {  
10 -  
11 - @ApiModelProperty(value = "表单名称")  
12 - private String name;  
13 -  
14 -}  
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormPageReqVO.java
@@ -13,7 +13,7 @@ import lombok.ToString; @@ -13,7 +13,7 @@ import lombok.ToString;
13 @ToString(callSuper = true) 13 @ToString(callSuper = true)
14 public class BpmFormPageReqVO extends PageParam { 14 public class BpmFormPageReqVO extends PageParam {
15 15
16 - @ApiModelProperty(value = "表单名称") 16 + @ApiModelProperty(value = "表单名称", example = "芋道")
17 private String name; 17 private String name;
18 18
19 } 19 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormRespVO.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo; 1 package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo;
2 2
3 -import lombok.*;  
4 -import java.util.*;  
5 -import io.swagger.annotations.*; 3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +import java.util.Date;
  11 +import java.util.List;
6 12
7 @ApiModel("动态表单 Response VO") 13 @ApiModel("动态表单 Response VO")
8 @Data 14 @Data
@@ -10,8 +16,15 @@ import io.swagger.annotations.*; @@ -10,8 +16,15 @@ import io.swagger.annotations.*;
10 @ToString(callSuper = true) 16 @ToString(callSuper = true)
11 public class BpmFormRespVO extends BpmFormBaseVO { 17 public class BpmFormRespVO extends BpmFormBaseVO {
12 18
13 - @ApiModelProperty(value = "表单编号", required = true) 19 + @ApiModelProperty(value = "表单编号", required = true, example = "1024")
14 private Long id; 20 private Long id;
  21 + @ApiModelProperty(value = "表单的配置", required = true, notes = "JSON 字符串")
  22 + @NotNull(message = "表单的配置不能为空")
  23 + private String conf;
  24 +
  25 + @ApiModelProperty(value = "表单项的数组", required = true, notes = "JSON 字符串的数组")
  26 + @NotNull(message = "表单项的数组不能为空")
  27 + private List<String> fields;
15 28
16 @ApiModelProperty(value = "创建时间", required = true) 29 @ApiModelProperty(value = "创建时间", required = true)
17 private Date createTime; 30 private Date createTime;
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/form/vo/BpmFormUpdateReqVO.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo;
3 import lombok.*; 3 import lombok.*;
4 import io.swagger.annotations.*; 4 import io.swagger.annotations.*;
5 import javax.validation.constraints.*; 5 import javax.validation.constraints.*;
  6 +import java.util.List;
6 7
7 @ApiModel("动态表单更新 Request VO") 8 @ApiModel("动态表单更新 Request VO")
8 @Data 9 @Data
@@ -10,8 +11,16 @@ import javax.validation.constraints.*; @@ -10,8 +11,16 @@ import javax.validation.constraints.*;
10 @ToString(callSuper = true) 11 @ToString(callSuper = true)
11 public class BpmFormUpdateReqVO extends BpmFormBaseVO { 12 public class BpmFormUpdateReqVO extends BpmFormBaseVO {
12 13
13 - @ApiModelProperty(value = "表单编号", required = true) 14 + @ApiModelProperty(value = "表单编号", required = true, example = "1024")
14 @NotNull(message = "表单编号不能为空") 15 @NotNull(message = "表单编号不能为空")
15 private Long id; 16 private Long id;
16 17
  18 + @ApiModelProperty(value = "表单的配置", required = true, notes = "JSON 字符串")
  19 + @NotNull(message = "表单的配置不能为空")
  20 + private String conf;
  21 +
  22 + @ApiModelProperty(value = "表单项的数组", required = true, notes = "JSON 字符串的数组")
  23 + @NotNull(message = "表单项的数组不能为空")
  24 + private List<String> fields;
  25 +
17 } 26 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/form/BpmFormConvert.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.form; 1 package cn.iocoder.yudao.adminserver.modules.bpm.convert.form;
2 2
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO; 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO;
4 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormExcelVO;  
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormRespVO; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormRespVO;
6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO;
7 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmForm; 6 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
8 import cn.iocoder.yudao.framework.common.pojo.PageResult; 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 import org.mapstruct.Mapper; 8 import org.mapstruct.Mapper;
10 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
@@ -21,16 +20,14 @@ public interface BpmFormConvert { @@ -21,16 +20,14 @@ public interface BpmFormConvert {
21 20
22 BpmFormConvert INSTANCE = Mappers.getMapper(BpmFormConvert.class); 21 BpmFormConvert INSTANCE = Mappers.getMapper(BpmFormConvert.class);
23 22
24 - BpmForm convert(BpmFormCreateReqVO bean); 23 + BpmFormDO convert(BpmFormCreateReqVO bean);
25 24
26 - BpmForm convert(BpmFormUpdateReqVO bean); 25 + BpmFormDO convert(BpmFormUpdateReqVO bean);
27 26
28 - BpmFormRespVO convert(BpmForm bean); 27 + BpmFormRespVO convert(BpmFormDO bean);
29 28
30 - List<BpmFormRespVO> convertList(List<BpmForm> list); 29 + List<BpmFormRespVO> convertList(List<BpmFormDO> list);
31 30
32 - PageResult<BpmFormRespVO> convertPage(PageResult<BpmForm> page);  
33 -  
34 - List<BpmFormExcelVO> convertList02(List<BpmForm> list); 31 + PageResult<BpmFormRespVO> convertPage(PageResult<BpmFormDO> page);
35 32
36 } 33 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/form/BpmForm.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/form/BpmFormDO.java
@@ -22,7 +22,7 @@ import java.util.List; @@ -22,7 +22,7 @@ import java.util.List;
22 @Builder 22 @Builder
23 @NoArgsConstructor 23 @NoArgsConstructor
24 @AllArgsConstructor 24 @AllArgsConstructor
25 -public class BpmForm extends BaseDO { 25 +public class BpmFormDO extends BaseDO {
26 26
27 /** 27 /**
28 * 编号 28 * 编号
@@ -37,12 +37,12 @@ public class BpmForm extends BaseDO { @@ -37,12 +37,12 @@ public class BpmForm extends BaseDO {
37 * 状态 37 * 状态
38 */ 38 */
39 private Integer status; 39 private Integer status;
40 -// /**  
41 -// * 表单JSON  
42 -// */  
43 -// private String formJson;  
44 /** 40 /**
45 - * 表单配置 41 + * 表单的配置
  42 + */
  43 + private String conf;
  44 + /**
  45 + * 表单项的数组
46 * 46 *
47 * 目前直接将 https://github.com/JakHuang/form-generator 生成的 JSON 串,直接保存 47 * 目前直接将 https://github.com/JakHuang/form-generator 生成的 JSON 串,直接保存
48 * 定义:https://github.com/JakHuang/form-generator/issues/46 48 * 定义:https://github.com/JakHuang/form-generator/issues/46
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/form/BpmFormData.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/form/BpmFormDataDO.java
@@ -22,7 +22,7 @@ import java.util.Map; @@ -22,7 +22,7 @@ import java.util.Map;
22 @Builder 22 @Builder
23 @NoArgsConstructor 23 @NoArgsConstructor
24 @AllArgsConstructor 24 @AllArgsConstructor
25 -public class BpmFormData extends BaseDO { 25 +public class BpmFormDataDO extends BaseDO {
26 26
27 /** 27 /**
28 * 编号 28 * 编号
@@ -31,7 +31,7 @@ public class BpmFormData extends BaseDO { @@ -31,7 +31,7 @@ public class BpmFormData extends BaseDO {
31 /** 31 /**
32 * 表单编号 32 * 表单编号
33 * 33 *
34 - * 关联 {@link BpmForm#getId()} 34 + * 关联 {@link BpmFormDO#getId()}
35 */ 35 */
36 private Long formId; 36 private Long formId;
37 /** 37 /**
@@ -41,7 +41,7 @@ public class BpmFormData extends BaseDO { @@ -41,7 +41,7 @@ public class BpmFormData extends BaseDO {
41 /** 41 /**
42 * 表单配置 42 * 表单配置
43 * 43 *
44 - * 冗余 {@link BpmForm#getFields()} 44 + * 冗余 {@link BpmFormDO#getFields()}
45 * 主要考虑,表单是可以修改的 45 * 主要考虑,表单是可以修改的
46 */ 46 */
47 @TableField(typeHandler = JacksonTypeHandler.class) 47 @TableField(typeHandler = JacksonTypeHandler.class)
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/form/BpmFormMapper.java
1 package cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.form; 1 package cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.form;
2 2
3 3
4 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormExportReqVO;  
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO;
6 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmForm; 5 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
9 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; 8 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
10 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
11 10
12 -import java.util.List;  
13 -  
14 /** 11 /**
15 * 动态表单 Mapper 12 * 动态表单 Mapper
16 * 13 *
17 * @author 风里雾里 14 * @author 风里雾里
18 */ 15 */
19 @Mapper 16 @Mapper
20 -public interface BpmFormMapper extends BaseMapperX<BpmForm> { 17 +public interface BpmFormMapper extends BaseMapperX<BpmFormDO> {
21 18
22 - default PageResult<BpmForm> selectPage(BpmFormPageReqVO reqVO) {  
23 - return selectPage(reqVO, new QueryWrapperX<BpmForm>() 19 + default PageResult<BpmFormDO> selectPage(BpmFormPageReqVO reqVO) {
  20 + return selectPage(reqVO, new QueryWrapperX<BpmFormDO>()
24 .likeIfPresent("name", reqVO.getName()) 21 .likeIfPresent("name", reqVO.getName())
25 .orderByDesc("id")); 22 .orderByDesc("id"));
26 } 23 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/form/BpmFormService.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.form; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.form;
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO; 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO;
4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO;
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO;
6 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmForm; 6 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 8
9 import javax.validation.Valid; 9 import javax.validation.Valid;
@@ -46,7 +46,7 @@ public interface BpmFormService { @@ -46,7 +46,7 @@ public interface BpmFormService {
46 * @param id 编号 46 * @param id 编号
47 * @return 动态表单 47 * @return 动态表单
48 */ 48 */
49 - BpmForm getForm(Long id); 49 + BpmFormDO getForm(Long id);
50 50
51 /** 51 /**
52 * 获得动态表单列表 52 * 获得动态表单列表
@@ -54,7 +54,7 @@ public interface BpmFormService { @@ -54,7 +54,7 @@ public interface BpmFormService {
54 * @param ids 编号 54 * @param ids 编号
55 * @return 动态表单列表 55 * @return 动态表单列表
56 */ 56 */
57 - List<BpmForm> getFormList(Collection<Long> ids); 57 + List<BpmFormDO> getFormList(Collection<Long> ids);
58 58
59 /** 59 /**
60 * 获得动态表单分页 60 * 获得动态表单分页
@@ -62,6 +62,6 @@ public interface BpmFormService { @@ -62,6 +62,6 @@ public interface BpmFormService {
62 * @param pageReqVO 分页查询 62 * @param pageReqVO 分页查询
63 * @return 动态表单分页 63 * @return 动态表单分页
64 */ 64 */
65 - PageResult<BpmForm> getFormPage(BpmFormPageReqVO pageReqVO); 65 + PageResult<BpmFormDO> getFormPage(BpmFormPageReqVO pageReqVO);
66 66
67 } 67 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/form/BpmFormServiceImpl.java renamed to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/form/impl/BpmFormServiceImpl.java
1 -package cn.iocoder.yudao.adminserver.modules.bpm.service.form; 1 +package cn.iocoder.yudao.adminserver.modules.bpm.service.form.impl;
2 2
3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO; 3 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO;
4 -import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormExportReqVO;  
5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO; 4 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO;
6 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO; 5 import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO;
7 import cn.iocoder.yudao.adminserver.modules.bpm.convert.form.BpmFormConvert; 6 import cn.iocoder.yudao.adminserver.modules.bpm.convert.form.BpmFormConvert;
8 -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmForm; 7 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
9 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.form.BpmFormMapper; 8 import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.form.BpmFormMapper;
  9 +import cn.iocoder.yudao.adminserver.modules.bpm.service.form.BpmFormService;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 10 import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
12 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
@@ -33,7 +33,7 @@ public class BpmFormServiceImpl implements BpmFormService { @@ -33,7 +33,7 @@ public class BpmFormServiceImpl implements BpmFormService {
33 @Override 33 @Override
34 public Long createForm(BpmFormCreateReqVO createReqVO) { 34 public Long createForm(BpmFormCreateReqVO createReqVO) {
35 // 插入 35 // 插入
36 - BpmForm form = BpmFormConvert.INSTANCE.convert(createReqVO); 36 + BpmFormDO form = BpmFormConvert.INSTANCE.convert(createReqVO);
37 formMapper.insert(form); 37 formMapper.insert(form);
38 // 返回 38 // 返回
39 return form.getId(); 39 return form.getId();
@@ -44,7 +44,7 @@ public class BpmFormServiceImpl implements BpmFormService { @@ -44,7 +44,7 @@ public class BpmFormServiceImpl implements BpmFormService {
44 // 校验存在 44 // 校验存在
45 this.validateFormExists(updateReqVO.getId()); 45 this.validateFormExists(updateReqVO.getId());
46 // 更新 46 // 更新
47 - BpmForm updateObj = BpmFormConvert.INSTANCE.convert(updateReqVO); 47 + BpmFormDO updateObj = BpmFormConvert.INSTANCE.convert(updateReqVO);
48 formMapper.updateById(updateObj); 48 formMapper.updateById(updateObj);
49 } 49 }
50 50
@@ -63,17 +63,17 @@ public class BpmFormServiceImpl implements BpmFormService { @@ -63,17 +63,17 @@ public class BpmFormServiceImpl implements BpmFormService {
63 } 63 }
64 64
65 @Override 65 @Override
66 - public BpmForm getForm(Long id) { 66 + public BpmFormDO getForm(Long id) {
67 return formMapper.selectById(id); 67 return formMapper.selectById(id);
68 } 68 }
69 69
70 @Override 70 @Override
71 - public List<BpmForm> getFormList(Collection<Long> ids) { 71 + public List<BpmFormDO> getFormList(Collection<Long> ids) {
72 return formMapper.selectBatchIds(ids); 72 return formMapper.selectBatchIds(ids);
73 } 73 }
74 74
75 @Override 75 @Override
76 - public PageResult<BpmForm> getFormPage(BpmFormPageReqVO pageReqVO) { 76 + public PageResult<BpmFormDO> getFormPage(BpmFormPageReqVO pageReqVO) {
77 return formMapper.selectPage(pageReqVO); 77 return formMapper.selectPage(pageReqVO);
78 } 78 }
79 79
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/service/form/BpmFormServiceTest.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.bpm.service.form;
  2 +
  3 +import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  4 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormCreateReqVO;
  5 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormPageReqVO;
  6 +import cn.iocoder.yudao.adminserver.modules.bpm.controller.form.vo.BpmFormUpdateReqVO;
  7 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO;
  8 +import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.form.BpmFormMapper;
  9 +import cn.iocoder.yudao.adminserver.modules.bpm.service.form.impl.BpmFormServiceImpl;
  10 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  11 +import org.junit.jupiter.api.Test;
  12 +import org.springframework.context.annotation.Import;
  13 +
  14 +import javax.annotation.Resource;
  15 +
  16 +import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.BPM_FORM_NOT_EXISTS;
  17 +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
  18 +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
  19 +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
  20 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
  21 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
  22 +import static org.junit.jupiter.api.Assertions.*;
  23 +
  24 +/**
  25 + * {@link BpmFormServiceImpl} 的单元测试类
  26 + *
  27 + * @author 芋道源码
  28 + */
  29 +@Import(BpmFormServiceImpl.class)
  30 +public class BpmFormServiceTest extends BaseDbUnitTest {
  31 +
  32 + @Resource
  33 + private BpmFormServiceImpl formService;
  34 +
  35 + @Resource
  36 + private BpmFormMapper formMapper;
  37 +
  38 + @Test
  39 + public void testCreateForm_success() {
  40 + // 准备参数
  41 + BpmFormCreateReqVO reqVO = randomPojo(BpmFormCreateReqVO.class);
  42 +
  43 + // 调用
  44 + Long formId = formService.createForm(reqVO);
  45 + // 断言
  46 + assertNotNull(formId);
  47 + // 校验记录的属性是否正确
  48 + BpmFormDO form = formMapper.selectById(formId);
  49 + assertPojoEquals(reqVO, form);
  50 + }
  51 +
  52 + @Test
  53 + public void testUpdateForm_success() {
  54 + // mock 数据
  55 + BpmFormDO dbForm = randomPojo(BpmFormDO.class);
  56 + formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据
  57 + // 准备参数
  58 + BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class, o -> {
  59 + o.setId(dbForm.getId()); // 设置更新的 ID
  60 + });
  61 +
  62 + // 调用
  63 + formService.updateForm(reqVO);
  64 + // 校验是否更新正确
  65 + BpmFormDO form = formMapper.selectById(reqVO.getId()); // 获取最新的
  66 + assertPojoEquals(reqVO, form);
  67 + }
  68 +
  69 + @Test
  70 + public void testUpdateForm_notExists() {
  71 + // 准备参数
  72 + BpmFormUpdateReqVO reqVO = randomPojo(BpmFormUpdateReqVO.class);
  73 +
  74 + // 调用, 并断言异常
  75 + assertServiceException(() -> formService.updateForm(reqVO), BPM_FORM_NOT_EXISTS);
  76 + }
  77 +
  78 + @Test
  79 + public void testDeleteForm_success() {
  80 + // mock 数据
  81 + BpmFormDO dbForm = randomPojo(BpmFormDO.class);
  82 + formMapper.insert(dbForm);// @Sql: 先插入出一条存在的数据
  83 + // 准备参数
  84 + Long id = dbForm.getId();
  85 +
  86 + // 调用
  87 + formService.deleteForm(id);
  88 + // 校验数据不存在了
  89 + assertNull(formMapper.selectById(id));
  90 + }
  91 +
  92 + @Test
  93 + public void testDeleteForm_notExists() {
  94 + // 准备参数
  95 + Long id = randomLongId();
  96 +
  97 + // 调用, 并断言异常
  98 + assertServiceException(() -> formService.deleteForm(id), BPM_FORM_NOT_EXISTS);
  99 + }
  100 +
  101 + @Test
  102 + public void testGetFormPage() {
  103 + // mock 数据
  104 + BpmFormDO dbForm = randomPojo(BpmFormDO.class, o -> { // 等会查询到
  105 + o.setName("芋道源码");
  106 + });
  107 + formMapper.insert(dbForm);
  108 + // 测试 name 不匹配
  109 + formMapper.insert(cloneIgnoreId(dbForm, o -> o.setName("源码")));
  110 + // 准备参数
  111 + BpmFormPageReqVO reqVO = new BpmFormPageReqVO();
  112 + reqVO.setName("芋道");
  113 +
  114 + // 调用
  115 + PageResult<BpmFormDO> pageResult = formService.getFormPage(reqVO);
  116 + // 断言
  117 + assertEquals(1, pageResult.getTotal());
  118 + assertEquals(1, pageResult.getList().size());
  119 + assertPojoEquals(dbForm, pageResult.getList().get(0));
  120 + }
  121 +
  122 +}
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/service/package-info.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.bpm.service;
yudao-admin-server/src/test/resources/sql/clean.sql
@@ -25,3 +25,6 @@ DELETE FROM &quot;sys_sms_log&quot;; @@ -25,3 +25,6 @@ DELETE FROM &quot;sys_sms_log&quot;;
25 DELETE FROM "sys_error_code"; 25 DELETE FROM "sys_error_code";
26 DELETE FROM "sys_social_user"; 26 DELETE FROM "sys_social_user";
27 DELETE FROM "sys_tenant"; 27 DELETE FROM "sys_tenant";
  28 +
  29 +-- bpm 开头的 DB
  30 +DELETE FROM "bpm_form";
yudao-admin-server/src/test/resources/sql/create_tables.sql
@@ -472,3 +472,19 @@ CREATE TABLE IF NOT EXISTS &quot;sys_tenant&quot; ( @@ -472,3 +472,19 @@ CREATE TABLE IF NOT EXISTS &quot;sys_tenant&quot; (
472 "deleted" bit NOT NULL DEFAULT FALSE, 472 "deleted" bit NOT NULL DEFAULT FALSE,
473 PRIMARY KEY ("id") 473 PRIMARY KEY ("id")
474 ) COMMENT '租户'; 474 ) COMMENT '租户';
  475 +
  476 +
  477 +CREATE TABLE IF NOT EXISTS "bpm_form" (
  478 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  479 + "name" varchar(63) NOT NULL,
  480 + "status" tinyint NOT NULL,
  481 + "fields" varchar(255) NOT NULL,
  482 + "conf" varchar(255) NOT NULL,
  483 + "remark" varchar(255),
  484 + "creator" varchar(64) DEFAULT '',
  485 + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  486 + "updater" varchar(64) DEFAULT '',
  487 + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  488 + "deleted" bit NOT NULL DEFAULT FALSE,
  489 + PRIMARY KEY ("id")
  490 +) COMMENT '动态表单';
yudao-admin-ui/src/utils/generator/drawingDefalut.js
1 export default [ 1 export default [
2 { 2 {
3 - // layout: 'colFormItem',  
4 - // tagIcon: 'input',  
5 - // label: '手机号',  
6 - // vModel: 'mobile',  
7 - // formId: 6,  
8 - // tag: 'el-input',  
9 - // placeholder: '请输入手机号',  
10 - // defaultValue: '',  
11 - // span: 24,  
12 - // style: { width: '100%' },  
13 - // clearable: true,  
14 - // prepend: '',  
15 - // append: '',  
16 - // 'prefix-icon': 'el-icon-mobile',  
17 - // 'suffix-icon': '',  
18 - // maxlength: 11,  
19 - // 'show-word-limit': true,  
20 - // readonly: false,  
21 - // disabled: false,  
22 - // required: true,  
23 - // changeTag: true,  
24 - // regList: [{  
25 - // pattern: '/^1(3|4|5|7|8|9)\\d{9}$/',  
26 - // message: '手机号格式错误'  
27 - // }] 3 + layout: 'colFormItem',
  4 + tagIcon: 'input',
  5 + label: '手机号',
  6 + vModel: 'mobile',
  7 + formId: 6,
  8 + tag: 'el-input',
  9 + placeholder: '请输入手机号',
  10 + defaultValue: '',
  11 + span: 24,
  12 + style: { width: '100%' },
  13 + clearable: true,
  14 + prepend: '',
  15 + append: '',
  16 + 'prefix-icon': 'el-icon-mobile',
  17 + 'suffix-icon': '',
  18 + maxlength: 11,
  19 + 'show-word-limit': true,
  20 + readonly: false,
  21 + disabled: false,
  22 + required: true,
  23 + changeTag: true,
  24 + regList: [{
  25 + pattern: '/^1(3|4|5|7|8|9)\\d{9}$/',
  26 + message: '手机号格式错误'
  27 + }]
28 } 28 }
29 ] 29 ]
yudao-admin-ui/src/views/bpm/form/formEditor.vue
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 </div> 32 </div>
33 </draggable> 33 </draggable>
34 <div class="components-title"> 34 <div class="components-title">
35 - <svg-icon icon-class="component" /> 布局型组件 35 + <svg-icon icon-class="component" />布局型组件
36 </div> 36 </div>
37 <draggable class="components-draggable" :list="layoutComponents" :group="{ name: 'componentsGroup', pull: 'clone', put: false }" 37 <draggable class="components-draggable" :list="layoutComponents" :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
38 :clone="cloneComponent" draggable=".components-item" :sort="false" @end="onEnd"> 38 :clone="cloneComponent" draggable=".components-item" :sort="false" @end="onEnd">
@@ -66,11 +66,10 @@ @@ -66,11 +66,10 @@
66 <div class="center-board"> 66 <div class="center-board">
67 <!-- 上面:操作按钮 --> 67 <!-- 上面:操作按钮 -->
68 <div class="action-bar"> 68 <div class="action-bar">
69 - <el-button class="delete-btn" icon="el-icon-delete" type="text" @click="empty">  
70 - 清空  
71 - </el-button> 69 + <el-button icon="el-icon-check" type="text" @click="save">保存</el-button>
  70 + <el-button class="delete-btn" icon="el-icon-delete" type="text" @click="empty">清空</el-button>
72 </div> 71 </div>
73 - <!-- 中间,表单 --> 72 + <!-- 中间,表单项 -->
74 <el-scrollbar class="center-scrollbar"> 73 <el-scrollbar class="center-scrollbar">
75 <el-row class="center-board-row" :gutter="formConf.gutter"> 74 <el-row class="center-board-row" :gutter="formConf.gutter">
76 <el-form :size="formConf.size" :label-position="formConf.labelPosition" :disabled="formConf.disabled" 75 <el-form :size="formConf.size" :label-position="formConf.labelPosition" :disabled="formConf.disabled"
@@ -102,6 +101,8 @@ import drawingDefalut from &#39;@/utils/generator/drawingDefalut&#39; @@ -102,6 +101,8 @@ import drawingDefalut from &#39;@/utils/generator/drawingDefalut&#39;
102 // import logo from '@/assets/logo/logo.png' 101 // import logo from '@/assets/logo/logo.png'
103 import DraggableItem from './../../tool/build/DraggableItem' 102 import DraggableItem from './../../tool/build/DraggableItem'
104 import RightPanel from './../../tool/build/RightPanel' 103 import RightPanel from './../../tool/build/RightPanel'
  104 +import {createForm, getForm, updateForm} from "@/api/bpm/form";
  105 +import {SysCommonStatusEnum} from "@/utils/constants";
105 106
106 // const emptyActiveData = { style: {}, autosize: {} } 107 // const emptyActiveData = { style: {}, autosize: {} }
107 let oldActiveId 108 let oldActiveId
@@ -123,22 +124,25 @@ export default { @@ -123,22 +124,25 @@ export default {
123 selectComponents, 124 selectComponents,
124 layoutComponents, 125 layoutComponents,
125 labelWidth: 100, 126 labelWidth: 100,
126 - drawingList: drawingDefalut, // 表单项的数组  
127 - drawingData: {},  
128 - activeId: drawingDefalut[0].formId, 127 +
  128 + drawingData: {}, // 生成后的表单数据
  129 +
  130 + drawingList: [], // 表单项的数组
  131 + activeId: 0,
  132 + activeData: {},
129 // drawerVisible: false, 133 // drawerVisible: false,
130 // formData: {}, 134 // formData: {},
131 // dialogVisible: false, 135 // dialogVisible: false,
132 // showFileName: false, 136 // showFileName: false,
133 - activeData: drawingDefalut[0],  
134 137
135 // 表单参数 138 // 表单参数
136 - form: {}, 139 + form: {
  140 + status: SysCommonStatusEnum.ENABLE,
  141 + },
137 // 表单校验 142 // 表单校验
138 rules: { 143 rules: {
139 name: [{ required: true, message: "表单名不能为空", trigger: "blur" }], 144 name: [{ required: true, message: "表单名不能为空", trigger: "blur" }],
140 status: [{ required: true, message: "开启状态不能为空", trigger: "blur" }], 145 status: [{ required: true, message: "开启状态不能为空", trigger: "blur" }],
141 - fields: [{ required: true, message: "表单配置不能为空", trigger: "blur" }],  
142 } 146 }
143 } 147 }
144 }, 148 },
@@ -161,6 +165,23 @@ export default { @@ -161,6 +165,23 @@ export default {
161 immediate: true 165 immediate: true
162 } 166 }
163 }, 167 },
  168 + created() {
  169 + // 读取表单配置
  170 + const formId = this.$route.query && this.$route.query.formId
  171 + if (formId) {
  172 + getForm(formId).then(response => {
  173 + const data = response.data
  174 + this.form = {
  175 + id: data.id,
  176 + name: data.name,
  177 + status: data.status,
  178 + remark: data.remark
  179 + }
  180 + this.formConf = JSON.parse(data.conf)
  181 + this.drawingList = this.decodeFields(data.fields)
  182 + });
  183 + }
  184 + },
164 methods: { 185 methods: {
165 activeFormItem(element) { 186 activeFormItem(element) {
166 this.activeData = element 187 this.activeData = element
@@ -202,6 +223,53 @@ export default { @@ -202,6 +223,53 @@ export default {
202 ...this.formConf 223 ...this.formConf
203 } 224 }
204 }, 225 },
  226 + save() {
  227 + // this.AssembleFormData()
  228 + // console.log(this.formData)
  229 + this.$refs["form"].validate(valid => {
  230 + if (!valid) {
  231 + return;
  232 + }
  233 + const form = {
  234 + conf: JSON.stringify(this.formConf), // 表单配置
  235 + // fields: JSON.stringify(this.drawingList), // 表单项的数组
  236 + fields: this.encodeFields(), // 表单项的数组
  237 + ...this.form // 表单名等
  238 + }
  239 + // 修改的提交
  240 + if (this.form.id != null) {
  241 + updateForm(form).then(response => {
  242 + this.msgSuccess("修改成功");
  243 + this.close()
  244 + });
  245 + return;
  246 + }
  247 + // 添加的提交
  248 + createForm(form).then(response => {
  249 + this.msgSuccess("新增成功");
  250 + this.close()
  251 + });
  252 + });
  253 + },
  254 + /** 关闭按钮 */
  255 + close() {
  256 + this.$store.dispatch("tagsView/delView", this.$route);
  257 + this.$router.push({ path: "/bpm/manager/form", query: { t: Date.now()}})
  258 + },
  259 + encodeFields() {
  260 + const fields = []
  261 + this.drawingList.forEach(item => {
  262 + fields.push(JSON.stringify(item))
  263 + })
  264 + return fields
  265 + },
  266 + decodeFields(fields) {
  267 + const drawingList = []
  268 + fields.forEach(item => {
  269 + drawingList.push(JSON.parse(item))
  270 + })
  271 + return drawingList
  272 + },
205 empty() { 273 empty() {
206 this.$confirm('确定要清空所有组件吗?', '提示', { type: 'warning' }).then( 274 this.$confirm('确定要清空所有组件吗?', '提示', { type: 'warning' }).then(
207 () => { 275 () => {
yudao-admin-ui/src/views/bpm/form/index.vue
@@ -30,7 +30,6 @@ @@ -30,7 +30,6 @@
30 <span>{{ getDictDataLabel(DICT_TYPE.SYS_COMMON_STATUS, scope.row.status) }}</span> 30 <span>{{ getDictDataLabel(DICT_TYPE.SYS_COMMON_STATUS, scope.row.status) }}</span>
31 </template> 31 </template>
32 </el-table-column> 32 </el-table-column>
33 - <el-table-column label="表单配置" align="center" prop="fields" />  
34 <el-table-column label="备注" align="center" prop="remark" /> 33 <el-table-column label="备注" align="center" prop="remark" />
35 <el-table-column label="创建时间" align="center" prop="createTime" width="180"> 34 <el-table-column label="创建时间" align="center" prop="createTime" width="180">
36 <template slot-scope="scope"> 35 <template slot-scope="scope">
@@ -49,36 +48,11 @@ @@ -49,36 +48,11 @@
49 <!-- 分页组件 --> 48 <!-- 分页组件 -->
50 <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" 49 <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
51 @pagination="getList"/> 50 @pagination="getList"/>
52 -  
53 - <!-- 对话框(添加 / 修改) -->  
54 - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>  
55 - <el-form ref="form" :model="form" :rules="rules" label-width="80px">  
56 - <el-form-item label="表单名" prop="name">  
57 - <el-input v-model="form.name" placeholder="请输入表单名" />  
58 - </el-form-item>  
59 - <el-form-item label="开启状态" prop="status">  
60 - <el-radio-group v-model="form.status">  
61 - <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.SYS_COMMON_STATUS)"  
62 - :key="dict.value" :label="parseInt(dict.value)">{{dict.label}}</el-radio>  
63 - </el-radio-group>  
64 - </el-form-item>  
65 - <el-form-item label="表单配置" prop="fields">  
66 - <el-input v-model="form.fields" placeholder="请输入表单配置" />  
67 - </el-form-item>  
68 - <el-form-item label="备注" prop="remark">  
69 - <el-input v-model="form.remark" placeholder="请输入备注" />  
70 - </el-form-item>  
71 - </el-form>  
72 - <div slot="footer" class="dialog-footer">  
73 - <el-button type="primary" @click="submitForm">确 定</el-button>  
74 - <el-button @click="cancel">取 消</el-button>  
75 - </div>  
76 - </el-dialog>  
77 </div> 51 </div>
78 </template> 52 </template>
79 53
80 <script> 54 <script>
81 -import { createForm, updateForm, deleteForm, getForm, getFormPage, exportFormExcel } from "@/api/bpm/form"; 55 +import { deleteForm, getFormPage} from "@/api/bpm/form";
82 56
83 export default { 57 export default {
84 name: "Form", 58 name: "Form",
@@ -94,24 +68,12 @@ export default { @@ -94,24 +68,12 @@ export default {
94 total: 0, 68 total: 0,
95 // 工作流的列表 69 // 工作流的列表
96 list: [], 70 list: [],
97 - // 弹出层标题  
98 - title: "",  
99 - // 是否显示弹出层  
100 - open: false,  
101 // 查询参数 71 // 查询参数
102 queryParams: { 72 queryParams: {
103 pageNo: 1, 73 pageNo: 1,
104 pageSize: 10, 74 pageSize: 10,
105 name: null, 75 name: null,
106 }, 76 },
107 - // 表单参数  
108 - form: {},  
109 - // 表单校验  
110 - rules: {  
111 - name: [{ required: true, message: "表单名不能为空", trigger: "blur" }],  
112 - status: [{ required: true, message: "开启状态不能为空", trigger: "blur" }],  
113 - fields: [{ required: true, message: "表单配置不能为空", trigger: "blur" }],  
114 - }  
115 }; 77 };
116 }, 78 },
117 created() { 79 created() {
@@ -130,22 +92,6 @@ export default { @@ -130,22 +92,6 @@ export default {
130 this.loading = false; 92 this.loading = false;
131 }); 93 });
132 }, 94 },
133 - /** 取消按钮 */  
134 - cancel() {  
135 - this.open = false;  
136 - this.reset();  
137 - },  
138 - /** 表单重置 */  
139 - reset() {  
140 - this.form = {  
141 - id: undefined,  
142 - name: undefined,  
143 - status: undefined,  
144 - fields: undefined,  
145 - remark: undefined,  
146 - };  
147 - this.resetForm("form");  
148 - },  
149 /** 搜索按钮操作 */ 95 /** 搜索按钮操作 */
150 handleQuery() { 96 handleQuery() {
151 this.queryParams.pageNo = 1; 97 this.queryParams.pageNo = 1;
@@ -158,41 +104,17 @@ export default { @@ -158,41 +104,17 @@ export default {
158 }, 104 },
159 /** 新增按钮操作 */ 105 /** 新增按钮操作 */
160 handleAdd() { 106 handleAdd() {
161 - this.reset();  
162 - this.open = true;  
163 - this.title = "添加工作流的"; 107 + this.$router.push({
  108 + path:"/bpm/manager/form/edit"
  109 + });
164 }, 110 },
165 /** 修改按钮操作 */ 111 /** 修改按钮操作 */
166 handleUpdate(row) { 112 handleUpdate(row) {
167 - this.reset();  
168 - const id = row.id;  
169 - getForm(id).then(response => {  
170 - this.form = response.data;  
171 - this.open = true;  
172 - this.title = "修改工作流的";  
173 - });  
174 - },  
175 - /** 提交按钮 */  
176 - submitForm() {  
177 - this.$refs["form"].validate(valid => {  
178 - if (!valid) {  
179 - return;  
180 - }  
181 - // 修改的提交  
182 - if (this.form.id != null) {  
183 - updateForm(this.form).then(response => {  
184 - this.msgSuccess("修改成功");  
185 - this.open = false;  
186 - this.getList();  
187 - });  
188 - return; 113 + this.$router.push({
  114 + path:"/bpm/manager/form/edit",
  115 + query:{
  116 + formId: row.id
189 } 117 }
190 - // 添加的提交  
191 - createForm(this.form).then(response => {  
192 - this.msgSuccess("新增成功");  
193 - this.open = false;  
194 - this.getList();  
195 - });  
196 }); 118 });
197 }, 119 },
198 /** 删除按钮操作 */ 120 /** 删除按钮操作 */
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
@@ -31,6 +31,14 @@ public class RandomUtils { @@ -31,6 +31,14 @@ public class RandomUtils {
31 // 字符串 31 // 字符串
32 PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(String.class, 32 PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(String.class,
33 (dataProviderStrategy, attributeMetadata, map) -> randomString()); 33 (dataProviderStrategy, attributeMetadata, map) -> randomString());
  34 + // Integer
  35 + PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Integer.class, (dataProviderStrategy, attributeMetadata, map) -> {
  36 + // 如果是 status 的字段,返回 0 或 1
  37 + if (attributeMetadata.getAttributeName().equals("status")) {
  38 + return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus();
  39 + }
  40 + return RandomUtil.randomInt();
  41 + });
34 // Boolean 42 // Boolean
35 PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> { 43 PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> {
36 // 如果是 deleted 的字段,返回非删除 44 // 如果是 deleted 的字段,返回非删除