增加动态表单依赖,增加节点与表单字段关联功能

This commit is contained in:
WenG 2022-03-17 23:11:57 +08:00
parent 537b74d96c
commit 6a879782de
17 changed files with 538 additions and 15 deletions

View File

@ -14,7 +14,7 @@
<dependencies>
<dependency>
<groupId>ink.wgink</groupId>
<artifactId>common</artifactId>
<artifactId>module-form</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

View File

@ -69,9 +69,9 @@ public class ActivitiController extends DefaultBaseController {
@ApiImplicitParam(name = "modelId", value = "模型ID", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("publish/{modelId}")
public SuccessResult publish(@PathVariable("modelId") String modelId) throws IOException {
activitiService.publish(modelId);
@PutMapping("deploy/{modelId}")
public SuccessResult deploy(@PathVariable("modelId") String modelId) throws IOException {
activitiService.saveDeploy(modelId);
return new SuccessResult();
}
@ -80,9 +80,9 @@ public class ActivitiController extends DefaultBaseController {
@ApiImplicitParam(name = "modelId", value = "模型ID", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("revoke-publish/{modelId}")
public SuccessResult revokePublish(@PathVariable("modelId") String modelId) {
activitiService.revokePublish(modelId);
@PutMapping("revoke-deploy/{modelId}")
public SuccessResult revokeDeploy(@PathVariable("modelId") String modelId) {
activitiService.revokeDeploy(modelId);
return new SuccessResult();
}

View File

@ -2,6 +2,7 @@ package ink.wgink.module.activiti.controller.api;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.activiti.pojo.dtos.ActivitiFlowNodeDTO;
import ink.wgink.module.activiti.pojo.dtos.ActivitiProcdefDTO;
import ink.wgink.module.activiti.service.activiti.IActivitiProcdefService;
import ink.wgink.pojo.ListPage;
@ -10,6 +11,7 @@ import ink.wgink.pojo.result.SuccessResultList;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -41,4 +43,14 @@ public class ActivitiProcdefController extends DefaultBaseController {
return activitiProcdefService.listPage(page.getPage(), page.getRows());
}
@ApiOperation(value = "通过部署ID获取任务列表", notes = "通过部署ID获取任务列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "deploymentId", value = "部署ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-flow-node/deployment-id/{deploymentId}")
public List<ActivitiFlowNodeDTO> listFlowNodeByDefineId(@PathVariable("deploymentId") String deploymentId) {
return activitiProcdefService.listFlowNodeByDeploymentId(deploymentId);
}
}

View File

@ -0,0 +1,25 @@
package ink.wgink.module.activiti.controller.api.oa;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.activiti.service.oa.INodeFieldService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description: 表单字段与流程节点
* @Author: WenG
* @Date: 2022/3/17 19:49
* @Version: 1.0
**/
@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "表单字段与流程节点")
@RestController
@RequestMapping(ISystemConstant.API_PREFIX + "/node-field")
public class NodeFieldController extends DefaultBaseController {
@Autowired
private INodeFieldService nodeFieldService;
}

View File

@ -0,0 +1,34 @@
package ink.wgink.module.activiti.dao.oa;
import ink.wgink.exceptions.RemoveException;
import ink.wgink.exceptions.SaveException;
import ink.wgink.interfaces.init.IInitBaseTable;
import org.springframework.stereotype.Repository;
import java.util.Map;
/**
* @Description: 表单字段与流程节点
* @Author: WenG
* @Date: 2022/3/17 20:09
* @Version: 1.0
**/
@Repository
public interface INodeFieldDao extends IInitBaseTable {
/**
* 新增
*
* @param params
* @throws SaveException
*/
void save(Map<String, Object> params) throws SaveException;
/**
* 删除
*
* @param params
* @throws RemoveException
*/
void delete(Map<String, Object> params) throws RemoveException;
}

View File

@ -0,0 +1,56 @@
package ink.wgink.module.activiti.pojo.dtos;
/**
* @Description: 表单节点
* @Author: WenG
* @Date: 2022/3/17 18:04
* @Version: 1.0
**/
public class ActivitiFlowNodeDTO {
private String type;
private String id;
private String name;
private String summary;
private String formKey;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getFormKey() {
return formKey;
}
public void setFormKey(String formKey) {
this.formKey = formKey;
}
}

View File

@ -0,0 +1,64 @@
package ink.wgink.module.activiti.pojo.vos.oa;
import ink.wgink.annotation.CheckEmptyAnnotation;
import ink.wgink.annotation.CheckListAnnotation;
import ink.wgink.annotation.CheckListBeanAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
/**
* @Description: 表单字段与流程节点更新
* @Author: WenG
* @Date: 2022/3/17 20:12
* @Version: 1.0
**/
@ApiModel
public class NodeFieldUpdateVO {
@ApiModelProperty(name = "deploymentId", value = "部署ID")
@CheckEmptyAnnotation(name = "部署ID")
private String deploymentId;
@ApiModelProperty(name = "formId", value = "表单ID")
@CheckEmptyAnnotation(name = "表单ID")
private String formId;
@ApiModelProperty(name = "flowNodeId", value = "流程节点ID")
@CheckEmptyAnnotation(name = "流程节点ID")
private String flowNodeId;
@CheckListAnnotation(name = "表单字段列表")
@CheckListBeanAnnotation
private List<NodeFieldVO> formFields;
public String getDeploymentId() {
return deploymentId;
}
public void setDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
}
public String getFormId() {
return formId;
}
public void setFormId(String formId) {
this.formId = formId;
}
public String getFlowNodeId() {
return flowNodeId;
}
public void setFlowNodeId(String flowNodeId) {
this.flowNodeId = flowNodeId;
}
public List<NodeFieldVO> getFormFields() {
return formFields;
}
public void setFormFields(List<NodeFieldVO> formFields) {
this.formFields = formFields;
}
}

View File

@ -0,0 +1,49 @@
package ink.wgink.module.activiti.pojo.vos.oa;
import ink.wgink.annotation.CheckEmptyAnnotation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @Description: 表单字段与流程节点
* @Author: WenG
* @Date: 2022/3/17 19:51
* @Version: 1.0
**/
@ApiModel
public class NodeFieldVO {
@ApiModelProperty(name = "fieldName", value = "字段名")
@CheckEmptyAnnotation(name = "字段名")
private String fieldName;
@ApiModelProperty(name = "isVisible", value = "是否可见")
@CheckEmptyAnnotation(name = "是否可见")
private Integer isVisible;
@ApiModelProperty(name = "isEditable", value = "是否可编辑")
@CheckEmptyAnnotation(name = "是否可编辑")
private Integer isEditable;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public Integer getIsVisible() {
return isVisible;
}
public void setIsVisible(Integer isVisible) {
this.isVisible = isVisible;
}
public Integer getIsEditable() {
return isEditable;
}
public void setIsEditable(Integer isEditable) {
this.isEditable = isEditable;
}
}

View File

@ -1,7 +1,9 @@
package ink.wgink.module.activiti.service.activiti;
import ink.wgink.module.activiti.pojo.dtos.ActivitiFlowNodeDTO;
import ink.wgink.module.activiti.pojo.dtos.ActivitiProcdefDTO;
import ink.wgink.pojo.result.SuccessResultList;
import org.activiti.bpmn.model.BpmnModel;
import java.util.List;
@ -16,4 +18,7 @@ public interface IActivitiProcdefService {
SuccessResultList<List<ActivitiProcdefDTO>> listPage(int page, int rows);
List<ActivitiFlowNodeDTO> listFlowNodeByDeploymentId(String deploymentId);
List<ActivitiFlowNodeDTO> listFlowNodeByModel(BpmnModel bpmnModel);
}

View File

@ -42,14 +42,14 @@ public interface IActivitiService {
*
* @param modelId
*/
void publish(String modelId) throws IOException;
void saveDeploy(String modelId) throws IOException;
/**
* 撤销发布模型
*
* @param modelId
*/
void revokePublish(String modelId);
void revokeDeploy(String modelId);
/**
* 模型列表

View File

@ -1,9 +1,14 @@
package ink.wgink.module.activiti.service.activiti.impl;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.base.SystemException;
import ink.wgink.module.activiti.pojo.dtos.ActivitiFlowNodeDTO;
import ink.wgink.module.activiti.pojo.dtos.ActivitiProcdefDTO;
import ink.wgink.module.activiti.service.activiti.IActivitiProcdefService;
import ink.wgink.pojo.result.SuccessResultList;
import org.activiti.bpmn.model.Process;
import org.activiti.bpmn.model.*;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
@ -38,7 +43,50 @@ public class ActivitiProcdefServiceImpl extends DefaultBaseService implements IA
BeanUtils.copyProperties(processDefinition, activitiProcdefDTO);
activitiProcdefDTOs.add(activitiProcdefDTO);
});
return new SuccessResultList<>(activitiProcdefDTOs, page, processDefinitionQuery.count());
}
@Override
public List<ActivitiFlowNodeDTO> listFlowNodeByDeploymentId(String deploymentId) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
if (processDefinition == null) {
throw new SearchException("流程定义不存在,请检查流程部署情况");
}
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
return listFlowNodeByModel(bpmnModel);
}
@Override
public List<ActivitiFlowNodeDTO> listFlowNodeByModel(BpmnModel bpmnModel) {
List<Process> processes = bpmnModel.getProcesses();
if (processes.size() > 1) {
throw new SystemException("流程不能有多条");
}
List<FlowNode> flowNodes = processes.get(0).findFlowElementsOfType(FlowNode.class);
List<ActivitiFlowNodeDTO> activitiFlowNodeDTOs = new ArrayList<>();
for (FlowNode flowNode : flowNodes) {
ActivitiFlowNodeDTO activitiFlowNodeDTO = new ActivitiFlowNodeDTO();
activitiFlowNodeDTO.setId(flowNode.getId());
activitiFlowNodeDTO.setName(flowNode.getName());
activitiFlowNodeDTO.setSummary(flowNode.getDocumentation());
if (flowNode instanceof StartEvent) {
StartEvent startEvent = (StartEvent) flowNode;
activitiFlowNodeDTO.setFormKey(startEvent.getFormKey());
activitiFlowNodeDTO.setType(StartEvent.class.getSimpleName());
} else if (flowNode instanceof EndEvent) {
activitiFlowNodeDTO.setType(EndEvent.class.getSimpleName());
} else if (flowNode instanceof UserTask) {
UserTask userTask = (UserTask) flowNode;
activitiFlowNodeDTO.setFormKey(userTask.getFormKey());
activitiFlowNodeDTO.setType(UserTask.class.getSimpleName());
} else {
continue;
}
activitiFlowNodeDTOs.add(activitiFlowNodeDTO);
}
return activitiFlowNodeDTOs;
}
}

View File

@ -6,11 +6,22 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.exceptions.RemoveException;
import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.base.SystemException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.activiti.pojo.dtos.ActivitiFlowNodeDTO;
import ink.wgink.module.activiti.pojo.vos.ActivitiVO;
import ink.wgink.module.activiti.pojo.vos.oa.NodeFieldUpdateVO;
import ink.wgink.module.activiti.pojo.vos.oa.NodeFieldVO;
import ink.wgink.module.activiti.service.activiti.IActivitiProcdefService;
import ink.wgink.module.activiti.service.activiti.IActivitiService;
import ink.wgink.module.activiti.service.oa.INodeFieldService;
import ink.wgink.module.form.pojo.pos.design.FormFieldPO;
import ink.wgink.module.form.pojo.pos.design.FormPO;
import ink.wgink.module.form.service.design.IFormFieldService;
import ink.wgink.module.form.service.design.IFormService;
import ink.wgink.pojo.result.SuccessResultList;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
import org.activiti.engine.HistoryService;
@ -25,6 +36,7 @@ import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
@ -46,6 +58,14 @@ public class ActivitiServiceImpl extends DefaultBaseService implements IActiviti
private HistoryService historyService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private IActivitiProcdefService activitiProcdefService;
@Autowired
private INodeFieldService nodeFieldService;
@Autowired
private IFormService formService;
@Autowired
private IFormFieldService formFieldService;
@Override
public String create(ActivitiVO activitiVO) throws UnsupportedEncodingException {
@ -77,7 +97,7 @@ public class ActivitiServiceImpl extends DefaultBaseService implements IActiviti
}
@Override
public void publish(String modelId) throws IOException {
public void saveDeploy(String modelId) throws IOException {
Model model = repositoryService.getModel(modelId);
if (model == null) {
throw new SearchException("模型不存在");
@ -86,6 +106,7 @@ public class ActivitiServiceImpl extends DefaultBaseService implements IActiviti
if (modelEditorSource == null) {
throw new SearchException("模型数据不存在");
}
LOG.debug("部署流程");
JsonNode modelNode = new ObjectMapper().readTree(modelEditorSource);
BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(modelNode);
Deployment deployment = repositoryService.createDeployment()
@ -95,10 +116,62 @@ public class ActivitiServiceImpl extends DefaultBaseService implements IActiviti
.deploy();
model.setDeploymentId(deployment.getId());
repositoryService.saveModel(model);
LOG.debug("节点关联表单");
saveNodeField(deployment.getId(), bpmnModel);
}
/**
* 保存节点与表单字段
*
* @param deploymentId
*/
private void saveNodeField(String deploymentId, BpmnModel bpmnModel) {
List<ActivitiFlowNodeDTO> activitiFlowNodeDTOs = activitiProcdefService.listFlowNodeByModel(bpmnModel);
if (activitiFlowNodeDTOs.isEmpty()) {
return;
}
String formKey = getFormIdByStartEvent(activitiFlowNodeDTOs);
if (StringUtils.isBlank(formKey)) {
LOG.debug("开始节点未绑定表单");
return;
}
FormPO formPO = formService.getPO(formKey);
if (formPO == null) {
throw new SystemException("表单不存在");
}
List<FormFieldPO> formFieldPOs = formFieldService.listPO(formPO.getFormId());
if (formFieldPOs.isEmpty()) {
throw new SystemException("表单字段为空");
}
activitiFlowNodeDTOs.forEach(activitiFlowNodeDTO -> {
NodeFieldUpdateVO nodeFieldUpdateVO = new NodeFieldUpdateVO();
nodeFieldUpdateVO.setFlowNodeId(activitiFlowNodeDTO.getId());
nodeFieldUpdateVO.setFormId(formPO.getFormId());
nodeFieldUpdateVO.setDeploymentId(deploymentId);
List<NodeFieldVO> nodeFieldVOs = new ArrayList<>();
formFieldPOs.forEach(formFieldPO -> {
NodeFieldVO nodeFieldVO = new NodeFieldVO();
nodeFieldVO.setFieldName(formFieldPO.getFieldName());
nodeFieldVO.setIsVisible(1);
nodeFieldVO.setIsEditable(1);
nodeFieldVOs.add(nodeFieldVO);
});
nodeFieldUpdateVO.setFormFields(nodeFieldVOs);
nodeFieldService.save(nodeFieldUpdateVO);
});
}
private String getFormIdByStartEvent(List<ActivitiFlowNodeDTO> activitiFlowNodeDTOs) {
for (ActivitiFlowNodeDTO activitiFlowNodeDTO : activitiFlowNodeDTOs) {
if (StringUtils.equals(activitiFlowNodeDTO.getType(), StartEvent.class.getSimpleName())) {
return activitiFlowNodeDTO.getFormKey();
}
}
return null;
}
@Override
public void revokePublish(String modelId) {
public void revokeDeploy(String modelId) {
Model modelData = repositoryService.getModel(modelId);
if (modelData == null) {
throw new SearchException("模型不存在");
@ -147,7 +220,7 @@ public class ActivitiServiceImpl extends DefaultBaseService implements IActiviti
editorObject.put("resourceId", "canvas");
JSONObject stencilSetObject = new JSONObject();
stencilSetObject.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
stencilSetObject.put("namespace", "wgink");
editorObject.put("stencilset", stencilSetObject);
repositoryService.addModelEditorSource(modelId, editorObject.toString().getBytes(ISystemConstant.CHARSET_UTF8));

View File

@ -0,0 +1,20 @@
package ink.wgink.module.activiti.service.oa;
import ink.wgink.module.activiti.pojo.vos.oa.NodeFieldUpdateVO;
/**
* @Description: 表单字段与流程节点
* @Author: WenG
* @Date: 2022/3/17 20:08
* @Version: 1.0
**/
public interface INodeFieldService {
/**
* 新增绑定
*
* @param nodeFieldUpdateVO
*/
void save(NodeFieldUpdateVO nodeFieldUpdateVO);
}

View File

@ -0,0 +1,71 @@
package ink.wgink.module.activiti.service.oa.impl;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.module.activiti.dao.oa.INodeFieldDao;
import ink.wgink.module.activiti.pojo.vos.oa.NodeFieldUpdateVO;
import ink.wgink.module.activiti.pojo.vos.oa.NodeFieldVO;
import ink.wgink.module.activiti.service.oa.INodeFieldService;
import ink.wgink.util.UUIDUtil;
import ink.wgink.util.map.HashMapUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* @Description: 表单字段与流程节点
* @Author: WenG
* @Date: 2022/3/17 20:09
* @Version: 1.0
**/
@Service
public class NodeFieldFieldServiceImpl extends DefaultBaseService implements INodeFieldService {
@Autowired
private INodeFieldDao nodeFieldDao;
@Override
public void save(NodeFieldUpdateVO nodeFieldUpdateVO) {
LOG.debug("删除原有配置");
delete(nodeFieldUpdateVO.getDeploymentId(), nodeFieldUpdateVO.getFormId(), nodeFieldUpdateVO.getFlowNodeId());
LOG.debug("新增现有配置");
save(nodeFieldUpdateVO.getDeploymentId(), nodeFieldUpdateVO.getFormId(), nodeFieldUpdateVO.getFlowNodeId(), nodeFieldUpdateVO.getFormFields());
}
/**
* 保存
*
* @param deploymentId
* @param formId
* @param flowNodeId
* @param formFields
*/
private void save(String deploymentId, String formId, String flowNodeId, List<NodeFieldVO> formFields) {
formFields.forEach(nodeFieldVO -> {
Map<String, Object> params = HashMapUtil.beanToMap(nodeFieldVO);
params.put("nodeFieldId", UUIDUtil.getUUID());
params.put("deploymentId", deploymentId);
params.put("formId", formId);
params.put("flowNodeId", flowNodeId);
nodeFieldDao.save(params);
});
}
/**
* 删除
*
* @param deploymentId 部署ID
* @param formId 表单ID
* @param flowNodeId 流程节点ID
*/
private void delete(String deploymentId, String formId, String flowNodeId) {
Map<String, Object> params = getHashMap(6);
params.put("deploymentId", deploymentId);
params.put("formId", formId);
params.put("flowNodeId", flowNodeId);
nodeFieldDao.delete(params);
}
}

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ink.wgink.module.activiti.dao.oa.INodeFieldDao">
<update id="createTable">
CREATE TABLE IF NOT EXISTS `oa_node_field` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`node_field_id` char(36) DEFAULT NULL COMMENT '主键',
`deployment_id` char(36) DEFAULT NULL COMMENT '流程部署ID',
`form_id` char(36) DEFAULT NULL COMMENT '表单ID',
`flow_node_id` char(60) DEFAULT NULL COMMENT '流程节点ID',
`field_name` varchar(255) DEFAULT NULL COMMENT '字段名',
`is_visible` int(1) DEFAULT '1' COMMENT '是否可见',
`is_editable` int(1) DEFAULT '1' COMMENT '是否可编辑',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='节点字段绑定';
</update>
<!-- 新增 -->
<insert id="save" parameterType="map">
INSERT INTO oa_node_field(
node_field_id,
deployment_id,
form_id,
flow_node_id,
field_name,
is_visible,
is_editable
) VALUES(
#{nodeFieldId},
#{deploymentId},
#{formId},
#{flowNodeId},
#{fieldName},
#{isVisible},
#{isEditable}
)
</insert>
<!-- 删除 -->
<delete id="delete" parameterType="map">
DELETE FROM
oa_node_field
WHERE
deployment_id = #{deploymentId}
<if test="formId != null and formId != ''">
AND
form_id = #{formId}
</if>
<if test="flowNodeId != null and flowNodeId != ''">
AND
flow_node_id = #{flowNodeId}
</if>
</delete>
</mapper>

View File

@ -127,7 +127,7 @@
},
{field: 'option2', width: 80, title: '操作', align:'center', fixed: 'right',
templet: function(row) {
return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="publishEvent">部署</button>';
return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deployEvent">部署</button>';
}
},
]
@ -233,11 +233,11 @@
table.on('tool(dataTable)', function(obj) {
var data = obj.data;
var layEvent = obj.event;
if(layEvent === 'publishEvent') {
if(layEvent === 'deployEvent') {
top.dialog.confirm('确定 部署 流程?', function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/activiti/publish/{modelId}', [data.id]), {}, null, function(code, data) {
top.restAjax.put(top.restAjax.path('api/activiti/deploy/{modelId}', [data.id]), {}, null, function(code, data) {
top.dialog.msg('操作成功');
reloadTable();
}, function(code, data) {

View File

@ -135,6 +135,14 @@
}
return '<button class="layui-btn layui-btn-xs" lay-event="flowChatEvent">查看</button>';
}
},
{field: 'form', width: 180, title: '操作', align:'center', fixed: 'right',
templet: function(row) {
return '<div class="layui-btn-group">' +
'<button class="layui-btn layui-btn-xs" lay-event="bindFormEvent">绑定表单</button>'+
'<button class="layui-btn layui-btn-primary layui-btn-xs" lay-event="bindFormEvent">节点管理</button>'+
'</div>';
}
}
]
],
@ -189,6 +197,8 @@
height: '400px',
onClose: function() {}
});
} else if(layEvent === 'bindFormEvent') {
}
});
});