完善动态表单与OA的功能
This commit is contained in:
parent
f5754acd8a
commit
ac362230d5
@ -69,7 +69,7 @@ public class NodeFieldController extends DefaultBaseController {
|
|||||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||||
@GetMapping("list/deployment-id/{deploymentId}/flow-node-id/{flowNodeId}")
|
@GetMapping("list/deployment-id/{deploymentId}/flow-node-id/{flowNodeId}")
|
||||||
public List<NodeFieldDTO> listByDeploymentIdAndFlowNodeId(@PathVariable("deploymentId") String deploymentId, @PathVariable("flowNodeId") String flowNodeId) {
|
public List<NodeFieldDTO> listByDeploymentIdAndFlowNodeId(@PathVariable("deploymentId") String deploymentId, @PathVariable("flowNodeId") String flowNodeId) {
|
||||||
return nodeFieldService.listByDeploymentIdAndFlowNodeId(deploymentId, flowNodeId);
|
return nodeFieldService.listByDeploymentIdAndNodeId(deploymentId, flowNodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -92,8 +93,29 @@ public class OaFormReportController extends DefaultBaseController {
|
|||||||
if (body.isEmpty()) {
|
if (body.isEmpty()) {
|
||||||
throw new ParamsException("提交内容不能为空");
|
throw new ParamsException("提交内容不能为空");
|
||||||
}
|
}
|
||||||
|
Object isNextEndEventObj = body.get(IOaFormReportService.KEY_IS_NEXT_END_EVENT);
|
||||||
|
if (isNextEndEventObj == null) {
|
||||||
|
throw new ParamsException("是否结束节点不能为空");
|
||||||
|
}
|
||||||
|
Boolean isNextEndEvent = Boolean.parseBoolean(isNextEndEventObj.toString());
|
||||||
|
Object selectTypeObj = body.get(IOaFormReportService.KEY_SELECT_TYPE);
|
||||||
|
if (selectTypeObj == null) {
|
||||||
|
throw new ParamsException("选择类型不能为空");
|
||||||
|
}
|
||||||
|
if (StringUtils.isBlank(selectTypeObj.toString())) {
|
||||||
|
throw new ParamsException("选择类型不能为空");
|
||||||
|
}
|
||||||
|
Object assigneesObj = body.get(IOaFormReportService.KEY_ASSIGNEES);
|
||||||
|
if (assigneesObj == null) {
|
||||||
|
throw new ParamsException("未选择下节点代理人");
|
||||||
|
}
|
||||||
|
List<String> assignees = (List<String>) assigneesObj;
|
||||||
|
if (!isNextEndEvent && assignees.isEmpty()) {
|
||||||
|
throw new ParamsException("未选择下节点代理人");
|
||||||
|
}
|
||||||
for (Map.Entry<String, Object> kv : body.entrySet()) {
|
for (Map.Entry<String, Object> kv : body.entrySet()) {
|
||||||
String key = kv.getKey();
|
String key = kv.getKey();
|
||||||
|
Object value = kv.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,10 @@ public class NodeFieldDTO {
|
|||||||
private String formId;
|
private String formId;
|
||||||
@ApiModelProperty(name = "deploymentId", value = "部署ID")
|
@ApiModelProperty(name = "deploymentId", value = "部署ID")
|
||||||
private String deploymentId;
|
private String deploymentId;
|
||||||
@ApiModelProperty(name = "flowNodeIndex", value = "节点下标")
|
@ApiModelProperty(name = "nodeIndex", value = "节点下标")
|
||||||
private String flowNodeIndex;
|
private String nodeIndex;
|
||||||
@ApiModelProperty(name = "flowNodeId", value = "节点ID")
|
@ApiModelProperty(name = "nodeId", value = "节点ID")
|
||||||
private String flowNodeId;
|
private String nodeId;
|
||||||
@ApiModelProperty(name = "flowNodeName", value = "节点名称")
|
|
||||||
private String flowNodeName;
|
|
||||||
@ApiModelProperty(name = "fieldName", value = "字段名")
|
@ApiModelProperty(name = "fieldName", value = "字段名")
|
||||||
private String fieldName;
|
private String fieldName;
|
||||||
@ApiModelProperty(name = "isVisible", value = "是否可见")
|
@ApiModelProperty(name = "isVisible", value = "是否可见")
|
||||||
@ -55,28 +53,20 @@ public class NodeFieldDTO {
|
|||||||
this.deploymentId = deploymentId;
|
this.deploymentId = deploymentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFlowNodeIndex() {
|
public String getNodeIndex() {
|
||||||
return flowNodeIndex == null ? "" : flowNodeIndex.trim();
|
return nodeIndex == null ? "" : nodeIndex.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFlowNodeIndex(String flowNodeIndex) {
|
public void setNodeIndex(String nodeIndex) {
|
||||||
this.flowNodeIndex = flowNodeIndex;
|
this.nodeIndex = nodeIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFlowNodeId() {
|
public String getNodeId() {
|
||||||
return flowNodeId == null ? "" : flowNodeId.trim();
|
return nodeId == null ? "" : nodeId.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFlowNodeId(String flowNodeId) {
|
public void setNodeId(String nodeId) {
|
||||||
this.flowNodeId = flowNodeId;
|
this.nodeId = nodeId;
|
||||||
}
|
|
||||||
|
|
||||||
public String getFlowNodeName() {
|
|
||||||
return flowNodeName == null ? "" : flowNodeName.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFlowNodeName(String flowNodeName) {
|
|
||||||
this.flowNodeName = flowNodeName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFieldName() {
|
public String getFieldName() {
|
||||||
|
@ -14,6 +14,8 @@ public class ConfirmAssigneeVO {
|
|||||||
|
|
||||||
private String nodeType;
|
private String nodeType;
|
||||||
private String btnText;
|
private String btnText;
|
||||||
|
private String btnExc;
|
||||||
|
private Boolean isNextEndEvent;
|
||||||
private List<AssigneeVO> assignees;
|
private List<AssigneeVO> assignees;
|
||||||
|
|
||||||
public String getNodeType() {
|
public String getNodeType() {
|
||||||
@ -32,6 +34,22 @@ public class ConfirmAssigneeVO {
|
|||||||
this.btnText = btnText;
|
this.btnText = btnText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getBtnExc() {
|
||||||
|
return btnExc == null ? "" : btnExc.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBtnExc(String btnExc) {
|
||||||
|
this.btnExc = btnExc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getNextEndEvent() {
|
||||||
|
return isNextEndEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNextEndEvent(Boolean nextEndEvent) {
|
||||||
|
isNextEndEvent = nextEndEvent;
|
||||||
|
}
|
||||||
|
|
||||||
public List<AssigneeVO> getAssignees() {
|
public List<AssigneeVO> getAssignees() {
|
||||||
return assignees = assignees == null ? new ArrayList<>() : assignees;
|
return assignees = assignees == null ? new ArrayList<>() : assignees;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package ink.wgink.module.activiti.pojo.vos.oa.page;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName: FieldControlVO
|
||||||
|
* @Description: 字段
|
||||||
|
* @Author: wanggeng
|
||||||
|
* @Date: 2022/4/20 14:59
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
public class FieldVO {
|
||||||
|
|
||||||
|
private String fieldName;
|
||||||
|
private Integer isEditable;
|
||||||
|
private Integer isVisible;
|
||||||
|
|
||||||
|
public String getFieldName() {
|
||||||
|
return fieldName == null ? "" : fieldName.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldName(String fieldName) {
|
||||||
|
this.fieldName = fieldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getIsEditable() {
|
||||||
|
return isEditable == null ? 0 : isEditable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsEditable(Integer isEditable) {
|
||||||
|
this.isEditable = isEditable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getIsVisible() {
|
||||||
|
return isVisible == null ? 0 : isVisible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsVisible(Integer isVisible) {
|
||||||
|
this.isVisible = isVisible;
|
||||||
|
}
|
||||||
|
}
|
@ -117,6 +117,14 @@ public interface IActivitiModelService {
|
|||||||
*/
|
*/
|
||||||
List<SequenceFlow> listNextUserTasksIncomingSequenceFlow(UserTask userTask);
|
List<SequenceFlow> listNextUserTasksIncomingSequenceFlow(UserTask userTask);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指向后续不是网关的的前节点的输出序列流
|
||||||
|
*
|
||||||
|
* @param userTask
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<SequenceFlow> listOutgoingSequenceFlowToNotGateway(UserTask userTask);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下一个用户任务列表
|
* 下一个用户任务列表
|
||||||
*
|
*
|
||||||
|
@ -151,6 +151,25 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct
|
|||||||
return incomingFlows;
|
return incomingFlows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SequenceFlow> listOutgoingSequenceFlowToNotGateway(UserTask userTask) {
|
||||||
|
List<SequenceFlow> sequenceFlows = new ArrayList<>();
|
||||||
|
setOutgoingSequenceFlowsNotGateway(userTask, sequenceFlows);
|
||||||
|
return sequenceFlows;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setOutgoingSequenceFlowsNotGateway(FlowNode flowNode, List<SequenceFlow> sequenceFlows) {
|
||||||
|
List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows();
|
||||||
|
for (SequenceFlow outgoingFlow : outgoingFlows) {
|
||||||
|
FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement();
|
||||||
|
if (targetFlowElement instanceof ExclusiveGateway) {
|
||||||
|
setOutgoingSequenceFlowsNotGateway((FlowNode) targetFlowElement, sequenceFlows);
|
||||||
|
} else {
|
||||||
|
sequenceFlows.add(outgoingFlow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<UserTask> listNextUserTasksByUserTask(UserTask userTask) {
|
public List<UserTask> listNextUserTasksByUserTask(UserTask userTask) {
|
||||||
List<SequenceFlow> outgoingFlows = userTask.getOutgoingFlows();
|
List<SequenceFlow> outgoingFlows = userTask.getOutgoingFlows();
|
||||||
@ -423,7 +442,7 @@ public class ActivitiModelServiceImpl extends DefaultBaseService implements IAct
|
|||||||
if (currentFlowNode instanceof UserTask) {
|
if (currentFlowNode instanceof UserTask) {
|
||||||
LOG.debug("当前节点为用户任务");
|
LOG.debug("当前节点为用户任务");
|
||||||
if (outgoingFlows.size() > 1) {
|
if (outgoingFlows.size() > 1) {
|
||||||
throw new SearchException("流程错误。用户任务流出序列流不存在");
|
throw new SearchException("流程错误。用户任务流出序列流数量大于1");
|
||||||
}
|
}
|
||||||
setNextUserTasks(outgoingFlows.get(0), nextUserTasks);
|
setNextUserTasks(outgoingFlows.get(0), nextUserTasks);
|
||||||
return;
|
return;
|
||||||
|
@ -90,9 +90,9 @@ public interface INodeFieldService {
|
|||||||
* 节点字段列表
|
* 节点字段列表
|
||||||
*
|
*
|
||||||
* @param deploymentId
|
* @param deploymentId
|
||||||
* @param flowNodeId
|
* @param nodeId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<NodeFieldDTO> listByDeploymentIdAndFlowNodeId(String deploymentId, String flowNodeId);
|
List<NodeFieldDTO> listByDeploymentIdAndNodeId(String deploymentId, String nodeId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,10 @@ public interface IOaFormReportService {
|
|||||||
String KEY_FORM_CODE = "formCode";
|
String KEY_FORM_CODE = "formCode";
|
||||||
String KEY_FORM_VERSION = "formVersion";
|
String KEY_FORM_VERSION = "formVersion";
|
||||||
String KEY_REPORT_UID = "reportUid";
|
String KEY_REPORT_UID = "reportUid";
|
||||||
String KEY_START_ASSIGNEE = "startAssignee";
|
String KEY_ASSIGNEE_USER = "assigneeUser";
|
||||||
|
String KEY_ASSIGNEES = "assignees";
|
||||||
|
String KEY_SELECT_TYPE = "selectType";
|
||||||
|
String KEY_IS_NEXT_END_EVENT = "isNextEndEvent";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存表单
|
* 保存表单
|
||||||
|
@ -94,10 +94,10 @@ public class NodeFieldServiceImpl extends DefaultBaseService implements INodeFie
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NodeFieldDTO> listByDeploymentIdAndFlowNodeId(String deploymentId, String flowNodeId) {
|
public List<NodeFieldDTO> listByDeploymentIdAndNodeId(String deploymentId, String nodeId) {
|
||||||
Map<String, Object> params = getHashMap(2);
|
Map<String, Object> params = getHashMap(2);
|
||||||
params.put("deploymentId", deploymentId);
|
params.put("deploymentId", deploymentId);
|
||||||
params.put("flowNodeId", flowNodeId);
|
params.put("nodeId", nodeId);
|
||||||
return nodeFieldDao.list(params);
|
return nodeFieldDao.list(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,20 @@
|
|||||||
package ink.wgink.module.activiti.service.oa.impl;
|
package ink.wgink.module.activiti.service.oa.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import ink.wgink.common.base.DefaultBaseService;
|
import ink.wgink.common.base.DefaultBaseService;
|
||||||
import ink.wgink.exceptions.SearchException;
|
import ink.wgink.exceptions.SearchException;
|
||||||
import ink.wgink.interfaces.user.IUserBaseService;
|
import ink.wgink.interfaces.user.IUserBaseService;
|
||||||
|
import ink.wgink.module.activiti.pojo.dtos.oa.NodeFieldDTO;
|
||||||
import ink.wgink.module.activiti.pojo.pos.oa.OaNodeAssigneePO;
|
import ink.wgink.module.activiti.pojo.pos.oa.OaNodeAssigneePO;
|
||||||
import ink.wgink.module.activiti.pojo.vos.oa.page.ConfirmAssigneeVO;
|
import ink.wgink.module.activiti.pojo.vos.oa.page.ConfirmAssigneeVO;
|
||||||
|
import ink.wgink.module.activiti.pojo.vos.oa.page.FieldVO;
|
||||||
import ink.wgink.module.activiti.service.activiti.IActivitiModelService;
|
import ink.wgink.module.activiti.service.activiti.IActivitiModelService;
|
||||||
import ink.wgink.module.activiti.service.oa.INodeAssigneeService;
|
import ink.wgink.module.activiti.service.oa.INodeAssigneeService;
|
||||||
|
import ink.wgink.module.activiti.service.oa.INodeFieldService;
|
||||||
import ink.wgink.module.activiti.service.oa.IOaFormReportRouteService;
|
import ink.wgink.module.activiti.service.oa.IOaFormReportRouteService;
|
||||||
|
import ink.wgink.module.form.enums.design.FormTypeEnum;
|
||||||
|
import ink.wgink.module.form.service.design.IFormFieldService;
|
||||||
import ink.wgink.module.form.service.report.IFormReportRouteService;
|
import ink.wgink.module.form.service.report.IFormReportRouteService;
|
||||||
import ink.wgink.pojo.dtos.user.UserDTO;
|
import ink.wgink.pojo.dtos.user.UserDTO;
|
||||||
import org.activiti.bpmn.model.FlowNode;
|
import org.activiti.bpmn.model.FlowNode;
|
||||||
@ -53,11 +59,16 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements
|
|||||||
private IActivitiModelService activitiModelService;
|
private IActivitiModelService activitiModelService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private INodeAssigneeService nodeAssigneeService;
|
private INodeAssigneeService nodeAssigneeService;
|
||||||
|
@Autowired
|
||||||
|
private IFormFieldService formFieldService;
|
||||||
|
@Autowired
|
||||||
|
private INodeFieldService nodeFieldService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save(String processDefinitionId, String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
|
public void save(String processDefinitionId, String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
|
||||||
Map<String, Object> model = getHashMap(10);
|
Map<String, Object> model = getHashMap(10);
|
||||||
model.put("processDefinitionId", processDefinitionId);
|
model.put("processDefinitionId", processDefinitionId);
|
||||||
|
model.put("formType", FormTypeEnum.OA.getValue());
|
||||||
|
|
||||||
LOG.debug("查询流程部署ID");
|
LOG.debug("查询流程部署ID");
|
||||||
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
|
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
|
||||||
@ -69,6 +80,17 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements
|
|||||||
List<ConfirmAssigneeVO> confirmAssigneeVOs = listConfirmAssignee(deploymentId, firstUserTask);
|
List<ConfirmAssigneeVO> confirmAssigneeVOs = listConfirmAssignee(deploymentId, firstUserTask);
|
||||||
model.put("confirmAssignees", JSON.toJSONString(confirmAssigneeVOs));
|
model.put("confirmAssignees", JSON.toJSONString(confirmAssigneeVOs));
|
||||||
|
|
||||||
|
LOG.debug("查询节点字段信息");
|
||||||
|
List<NodeFieldDTO> nodeFieldDTOs = nodeFieldService.listByDeploymentIdAndNodeId(deploymentId, firstUserTask.getId());
|
||||||
|
List<FieldVO> fieldVOs = nodeFieldDTOs.stream().map(nodeFieldDTO -> {
|
||||||
|
FieldVO fieldVO = new FieldVO();
|
||||||
|
fieldVO.setFieldName(nodeFieldDTO.getFieldName());
|
||||||
|
fieldVO.setIsEditable(nodeFieldDTO.getIsEditable());
|
||||||
|
fieldVO.setIsVisible(nodeFieldDTO.getIsVisible());
|
||||||
|
return fieldVO;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
model.put("fields", JSONObject.toJSONString(fieldVOs));
|
||||||
|
|
||||||
formReportRouteService.save(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse, model);
|
formReportRouteService.save(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +110,7 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements
|
|||||||
UserTask currentUserTask = (UserTask) flowNode;
|
UserTask currentUserTask = (UserTask) flowNode;
|
||||||
|
|
||||||
Map<String, Object> model = getHashMap(10);
|
Map<String, Object> model = getHashMap(10);
|
||||||
|
model.put("formType", FormTypeEnum.OA.getValue());
|
||||||
model.put("taskId", taskId);
|
model.put("taskId", taskId);
|
||||||
model.put("isNeedClaim", isNeedClaim);
|
model.put("isNeedClaim", isNeedClaim);
|
||||||
LOG.debug("查询下一个用户任务后直连用户任务列表");
|
LOG.debug("查询下一个用户任务后直连用户任务列表");
|
||||||
@ -134,21 +157,32 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private List<ConfirmAssigneeVO> listConfirmAssignee(String deploymentId, UserTask currentUserTask) {
|
private List<ConfirmAssigneeVO> listConfirmAssignee(String deploymentId, UserTask currentUserTask) {
|
||||||
|
LOG.debug("1.获取后续任务节点");
|
||||||
List<UserTask> nextUserTasks = activitiModelService.listNextUserTasksByUserTask(currentUserTask);
|
List<UserTask> nextUserTasks = activitiModelService.listNextUserTasksByUserTask(currentUserTask);
|
||||||
clearUserTask(nextUserTasks);
|
clearUserTask(nextUserTasks);
|
||||||
LOG.debug("发起流程,查询第一个用户任务后直连用户任务列表的流入序列流");
|
LOG.debug("2.发起流程,查询第一个用户任务后直连用户任务列表的流入序列流");
|
||||||
// 序列流的数量决定了提交按钮的数量,名字决定了提交按钮的名称,没有名称默认
|
// 序列流的数量决定了提交按钮的数量,名字决定了提交按钮的名称,没有名称默认
|
||||||
List<SequenceFlow> sequenceFlows = activitiModelService.listNextUserTasksIncomingSequenceFlow(currentUserTask);
|
List<SequenceFlow> sequenceFlows = activitiModelService.listOutgoingSequenceFlowToNotGateway(currentUserTask);
|
||||||
|
|
||||||
LOG.debug("遍历后续的用户列表");
|
// 当下个用户任务节点列表为空并且指向用户任务的输出流为空时,表示下个节点为结束节点
|
||||||
|
// if(nextUserTasks.isEmpty() && sequenceFlows.isEmpty()) {
|
||||||
|
// ConfirmAssigneeVO confirmAssigneeVO = new ConfirmAssigneeVO();
|
||||||
|
// confirmAssigneeVO.setNextEndEvent(true);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
LOG.debug("3.遍历后续的用户列表");
|
||||||
// 按照流入序列流进行区分,页面上体现出为按钮中对应的不同的代理人列表
|
// 按照流入序列流进行区分,页面上体现出为按钮中对应的不同的代理人列表
|
||||||
List<ConfirmAssigneeVO> confirmAssigneeVOs = new CopyOnWriteArrayList<>();
|
List<ConfirmAssigneeVO> confirmAssigneeVOs = new CopyOnWriteArrayList<>();
|
||||||
for (int i = 0; i < sequenceFlows.size(); i++) {
|
for (int i = 0; i < sequenceFlows.size(); i++) {
|
||||||
SequenceFlow sequenceFlow = sequenceFlows.get(i);
|
SequenceFlow sequenceFlow = sequenceFlows.get(i);
|
||||||
String name = sequenceFlow.getName();
|
String name = sequenceFlow.getName();
|
||||||
ConfirmAssigneeVO confirmAssigneeVO = new ConfirmAssigneeVO();
|
ConfirmAssigneeVO confirmAssigneeVO = new ConfirmAssigneeVO();
|
||||||
|
// 当有输出流
|
||||||
|
confirmAssigneeVO.setNextEndEvent(nextUserTasks.isEmpty() ? true : false);
|
||||||
|
confirmAssigneeVO.setBtnExc(getSequenceFlowExcCondition(sequenceFlow.getConditionExpression()));
|
||||||
if (StringUtils.isBlank(name)) {
|
if (StringUtils.isBlank(name)) {
|
||||||
confirmAssigneeVO.setBtnText("确认" + (i + 1));
|
confirmAssigneeVO.setBtnText("提交" + (i + 1));
|
||||||
} else {
|
} else {
|
||||||
confirmAssigneeVO.setBtnText(name);
|
confirmAssigneeVO.setBtnText(name);
|
||||||
}
|
}
|
||||||
@ -174,6 +208,34 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements
|
|||||||
return confirmAssigneeVOs;
|
return confirmAssigneeVOs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取序列流上的exc条件
|
||||||
|
*
|
||||||
|
* @param conditionExpression
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private String getSequenceFlowExcCondition(String conditionExpression) {
|
||||||
|
if (StringUtils.isBlank(conditionExpression)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String[] expressionArray = conditionExpression.split("[{}$&|]");
|
||||||
|
String excCondition = null;
|
||||||
|
for (String expression : expressionArray) {
|
||||||
|
if (!expression.contains("==")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!expression.contains("exc")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String[] conditionArray = expression.split("==");
|
||||||
|
String condition = conditionArray[1];
|
||||||
|
condition = condition.replaceAll("'", "");
|
||||||
|
condition = condition.replaceAll("\"", "");
|
||||||
|
excCondition = condition;
|
||||||
|
}
|
||||||
|
return excCondition;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清除相同的序列流(目标相同)
|
* 清除相同的序列流(目标相同)
|
||||||
*
|
*
|
||||||
@ -195,4 +257,5 @@ public class OaFormReportRouteServiceImpl extends DefaultBaseService implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@ package ink.wgink.module.activiti.service.oa.impl;
|
|||||||
|
|
||||||
import ink.wgink.common.base.DefaultBaseService;
|
import ink.wgink.common.base.DefaultBaseService;
|
||||||
import ink.wgink.exceptions.SearchException;
|
import ink.wgink.exceptions.SearchException;
|
||||||
|
import ink.wgink.module.activiti.enums.oa.assignee.NodeTypeEnum;
|
||||||
|
import ink.wgink.module.activiti.service.activiti.IActivitiModelService;
|
||||||
import ink.wgink.module.activiti.service.oa.IOaFormReportService;
|
import ink.wgink.module.activiti.service.oa.IOaFormReportService;
|
||||||
import ink.wgink.module.form.service.report.IFormReportService;
|
import ink.wgink.module.form.service.report.IFormReportService;
|
||||||
import ink.wgink.pojo.ListPage;
|
import ink.wgink.pojo.ListPage;
|
||||||
@ -10,6 +12,7 @@ import org.activiti.engine.RuntimeService;
|
|||||||
import org.activiti.engine.TaskService;
|
import org.activiti.engine.TaskService;
|
||||||
import org.activiti.engine.runtime.ProcessInstance;
|
import org.activiti.engine.runtime.ProcessInstance;
|
||||||
import org.activiti.engine.task.Task;
|
import org.activiti.engine.task.Task;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -47,6 +50,16 @@ public class OaFormReportServiceImpl extends DefaultBaseService implements IOaFo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveByUserId(String userId, String processDefinitionId, String formCode, Integer formVersion, Map<String, Object> params) {
|
public void saveByUserId(String userId, String processDefinitionId, String formCode, Integer formVersion, Map<String, Object> params) {
|
||||||
|
List<String> assignees = (List<String>) params.get(IOaFormReportService.KEY_ASSIGNEES);
|
||||||
|
String selectType = params.get(IOaFormReportService.KEY_SELECT_TYPE).toString();
|
||||||
|
Boolean isNextEndEvent = Boolean.parseBoolean(params.get(IOaFormReportService.KEY_IS_NEXT_END_EVENT).toString());
|
||||||
|
Object excObj = params.get(IActivitiModelService.EXCLUSIVE_GATEWAY_CONDITION_KEY);
|
||||||
|
// 移除无效的内容
|
||||||
|
params.remove(IOaFormReportService.KEY_ASSIGNEES);
|
||||||
|
params.remove(IOaFormReportService.KEY_SELECT_TYPE);
|
||||||
|
params.remove(IOaFormReportService.KEY_IS_NEXT_END_EVENT);
|
||||||
|
params.remove(IActivitiModelService.EXCLUSIVE_GATEWAY_CONDITION_KEY);
|
||||||
|
|
||||||
LOG.debug("保存表单");
|
LOG.debug("保存表单");
|
||||||
String uid = formReportService.saveAndReturnId(formCode, formVersion, params);
|
String uid = formReportService.saveAndReturnId(formCode, formVersion, params);
|
||||||
LOG.debug("定义流程发起人");
|
LOG.debug("定义流程发起人");
|
||||||
@ -54,7 +67,7 @@ public class OaFormReportServiceImpl extends DefaultBaseService implements IOaFo
|
|||||||
variables.put(KEY_FORM_CODE, formCode);
|
variables.put(KEY_FORM_CODE, formCode);
|
||||||
variables.put(KEY_FORM_VERSION, formVersion);
|
variables.put(KEY_FORM_VERSION, formVersion);
|
||||||
variables.put(KEY_REPORT_UID, uid);
|
variables.put(KEY_REPORT_UID, uid);
|
||||||
variables.put(KEY_START_ASSIGNEE, userId);
|
variables.put(KEY_ASSIGNEE_USER, userId);
|
||||||
LOG.debug("发起流程");
|
LOG.debug("发起流程");
|
||||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables);
|
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables);
|
||||||
LOG.debug("更新表单数据的流程实例ID");
|
LOG.debug("更新表单数据的流程实例ID");
|
||||||
@ -64,6 +77,13 @@ public class OaFormReportServiceImpl extends DefaultBaseService implements IOaFo
|
|||||||
if (task == null) {
|
if (task == null) {
|
||||||
throw new SearchException("任务不存在");
|
throw new SearchException("任务不存在");
|
||||||
}
|
}
|
||||||
|
// 网关条件
|
||||||
|
if (excObj != null && !StringUtils.isBlank(excObj.toString())) {
|
||||||
|
params.put(IActivitiModelService.EXCLUSIVE_GATEWAY_CONDITION_KEY, excObj);
|
||||||
|
}
|
||||||
|
if (!isNextEndEvent) {
|
||||||
|
setFormReportAssignee(selectType, assignees, params);
|
||||||
|
}
|
||||||
taskService.complete(task.getId(), params, true);
|
taskService.complete(task.getId(), params, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,14 +101,46 @@ public class OaFormReportServiceImpl extends DefaultBaseService implements IOaFo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateByUserId(String userId, String taskId, String formCode, Integer formVersion, Integer isNeedClaim, String uid, Map<String, Object> params) {
|
public void updateByUserId(String userId, String taskId, String formCode, Integer formVersion, Integer isNeedClaim, String uid, Map<String, Object> params) {
|
||||||
|
List<String> assignees = (List<String>) params.get(IOaFormReportService.KEY_ASSIGNEES);
|
||||||
|
String selectType = params.get(IOaFormReportService.KEY_SELECT_TYPE).toString();
|
||||||
|
Boolean isNextEndEvent = Boolean.parseBoolean(params.get(IOaFormReportService.KEY_IS_NEXT_END_EVENT).toString());
|
||||||
|
Object excObj = params.get(IActivitiModelService.EXCLUSIVE_GATEWAY_CONDITION_KEY);
|
||||||
|
// 移除无效的内容
|
||||||
|
params.remove(IOaFormReportService.KEY_ASSIGNEES);
|
||||||
|
params.remove(IOaFormReportService.KEY_SELECT_TYPE);
|
||||||
|
params.remove(IOaFormReportService.KEY_IS_NEXT_END_EVENT);
|
||||||
|
params.remove(IActivitiModelService.EXCLUSIVE_GATEWAY_CONDITION_KEY);
|
||||||
|
|
||||||
formReportService.update(formCode, formVersion, uid, params);
|
formReportService.update(formCode, formVersion, uid, params);
|
||||||
if (isNeedClaim == 1) {
|
if (isNeedClaim == 1) {
|
||||||
LOG.debug("认领任务");
|
LOG.debug("认领任务");
|
||||||
taskService.claim(taskId, userId);
|
taskService.claim(taskId, userId);
|
||||||
}
|
}
|
||||||
|
// 网关条件
|
||||||
|
if (excObj != null && !StringUtils.isBlank(excObj.toString())) {
|
||||||
|
params.put(IActivitiModelService.EXCLUSIVE_GATEWAY_CONDITION_KEY, excObj);
|
||||||
|
}
|
||||||
|
if (!isNextEndEvent) {
|
||||||
|
setFormReportAssignee(selectType, assignees, params);
|
||||||
|
}
|
||||||
taskService.complete(taskId, params, true);
|
taskService.complete(taskId, params, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置表单提交代理人
|
||||||
|
*
|
||||||
|
* @param selectType 选择类型
|
||||||
|
* @param assignees 代理人列表
|
||||||
|
* @param formReportParams 表单参数
|
||||||
|
*/
|
||||||
|
private void setFormReportAssignee(String selectType, List<String> assignees, Map<String, Object> formReportParams) {
|
||||||
|
if (StringUtils.equals(selectType, NodeTypeEnum.MULTIPLE.getValue())) {
|
||||||
|
formReportParams.put(IActivitiModelService.ASSIGNEE_LIST, assignees);
|
||||||
|
} else {
|
||||||
|
formReportParams.put(IOaFormReportService.KEY_ASSIGNEE_USER, assignees.get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> get(String formCode, Integer formVersion, String uid) {
|
public Map<String, Object> get(String formCode, Integer formVersion, String uid) {
|
||||||
return formReportService.get(formCode, formVersion, uid);
|
return formReportService.get(formCode, formVersion, uid);
|
||||||
|
@ -6,9 +6,8 @@
|
|||||||
<id column="node_field_id" property="nodeFieldId"/>
|
<id column="node_field_id" property="nodeFieldId"/>
|
||||||
<result column="deployment_id" property="deploymentId"/>
|
<result column="deployment_id" property="deploymentId"/>
|
||||||
<result column="form_id" property="formId"/>
|
<result column="form_id" property="formId"/>
|
||||||
<result column="flow_node_index" property="flowNodeIndex"/>
|
<result column="node_index" property="nodeIndex"/>
|
||||||
<result column="flow_node_id" property="flowNodeId"/>
|
<result column="node_id" property="nodeId"/>
|
||||||
<result column="flow_node_name" property="flowNodeName"/>
|
|
||||||
<result column="field_name" property="fieldName"/>
|
<result column="field_name" property="fieldName"/>
|
||||||
<result column="is_visible" property="isVisible"/>
|
<result column="is_visible" property="isVisible"/>
|
||||||
<result column="is_editable" property="isEditable"/>
|
<result column="is_editable" property="isEditable"/>
|
||||||
@ -154,9 +153,8 @@
|
|||||||
node_field_id,
|
node_field_id,
|
||||||
deployment_id,
|
deployment_id,
|
||||||
form_id,
|
form_id,
|
||||||
flow_node_index,
|
node_index,
|
||||||
flow_node_id,
|
node_id,
|
||||||
flow_node_name,
|
|
||||||
field_name,
|
field_name,
|
||||||
is_visible,
|
is_visible,
|
||||||
is_editable
|
is_editable
|
||||||
@ -171,13 +169,13 @@
|
|||||||
AND
|
AND
|
||||||
form_id = #{formId}
|
form_id = #{formId}
|
||||||
</if>
|
</if>
|
||||||
<if test="flowNodeId != null and flowNodeId != ''">
|
<if test="nodeId != null and nodeId != ''">
|
||||||
AND
|
AND
|
||||||
flow_node_id = #{flowNodeId}
|
node_id = #{nodeId}
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
ORDER BY
|
ORDER BY
|
||||||
flow_node_index
|
node_index
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
@ -9,13 +9,13 @@ var OaNodeManageCtrl = ['$scope', '$modal', '$timeout', '$translate', function (
|
|||||||
}];
|
}];
|
||||||
|
|
||||||
var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $timeout, $http) {
|
var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $timeout, $http) {
|
||||||
console.log($scope.editor);
|
// console.log($scope.editor);
|
||||||
// console.log($scope.editor.modelMetaData.model.childShapes);
|
// console.log($scope.editor.modelMetaData.model.childShapes);
|
||||||
// console.log($scope.stencilItemGroups)
|
// console.log($scope.stencilItemGroups)
|
||||||
// 获取流程中的配置
|
// 获取流程中的配置
|
||||||
var selection = $scope.editor.selection[0];
|
var selection = $scope.editor.selection[0];
|
||||||
var modelJson = $scope.editor.getJSON();
|
var modelJson = $scope.editor.getJSON();
|
||||||
console.log(modelJson);
|
// console.log(modelJson);
|
||||||
var childShapes = modelJson.childShapes;
|
var childShapes = modelJson.childShapes;
|
||||||
|
|
||||||
// 关联到的属性
|
// 关联到的属性
|
||||||
@ -33,7 +33,8 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $t
|
|||||||
var MULTI_INSTANCE_VARIABLE = 'assignee';
|
var MULTI_INSTANCE_VARIABLE = 'assignee';
|
||||||
var NR_OF_COMPLETED_INSTANCES = 'nrOfCompletedInstances';
|
var NR_OF_COMPLETED_INSTANCES = 'nrOfCompletedInstances';
|
||||||
var NR_OF_INSTANCES = 'nrOfInstances';
|
var NR_OF_INSTANCES = 'nrOfInstances';
|
||||||
var START_ASSIGNEE = "${startAssignee}"
|
var START_ASSIGNEE = '${startAssignee}';
|
||||||
|
var ASSIGNEE_USER = '${assigneeUser}';
|
||||||
|
|
||||||
$scope.oaNodeManage = {
|
$scope.oaNodeManage = {
|
||||||
assignee: {
|
assignee: {
|
||||||
@ -381,47 +382,12 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $t
|
|||||||
function updateAssignee() {
|
function updateAssignee() {
|
||||||
assigneeProperty.value = {};
|
assigneeProperty.value = {};
|
||||||
assigneeProperty.value.assignment = {
|
assigneeProperty.value.assignment = {
|
||||||
assignee: $scope.oaNodeManage.assignee.assignee,
|
assignee: ASSIGNEE_USER,
|
||||||
candidateUsers: []
|
candidateUsers: []
|
||||||
}
|
}
|
||||||
$scope.updatePropertyInModel(assigneeProperty);
|
$scope.updatePropertyInModel(assigneeProperty);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStartAssignee() {
|
|
||||||
assigneeProperty.value = {};
|
|
||||||
assigneeProperty.value.assignment = {
|
|
||||||
assignee: START_ASSIGNEE,
|
|
||||||
candidateUsers: []
|
|
||||||
}
|
|
||||||
$scope.updatePropertyInModel(assigneeProperty);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新手动指定多选候选人
|
|
||||||
function updateCandidate() {
|
|
||||||
assigneeProperty.value = {};
|
|
||||||
assigneeProperty.value.assignment = {
|
|
||||||
candidateUsers: []
|
|
||||||
};
|
|
||||||
var candidates = $scope.oaNodeManage.assignee.candidates.split(',');
|
|
||||||
for (var i = 0, item; item = candidates[i++];) {
|
|
||||||
if (!item) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
assigneeProperty.value.assignment.candidateUsers.push({
|
|
||||||
value: item
|
|
||||||
})
|
|
||||||
}
|
|
||||||
$scope.updatePropertyInModel(assigneeProperty);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新手动指定多个候选人
|
|
||||||
function updateCandidates() {
|
|
||||||
assigneeProperty.value = {};
|
|
||||||
assigneeProperty.value.assignment = {
|
|
||||||
candidateUsers: [{value: CANDIDATES_COLLECTION}]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新多实例
|
* 更新多实例
|
||||||
*/
|
*/
|
||||||
@ -500,7 +466,7 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $t
|
|||||||
}
|
}
|
||||||
// 多选
|
// 多选
|
||||||
if (assignee.assigneeCount === 'candidate') {
|
if (assignee.assigneeCount === 'candidate') {
|
||||||
updateCandidate();
|
updateAssignee();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -508,10 +474,10 @@ var OaNodeManagePopupCtrl = ['$scope', '$timeout', '$http', function ($scope, $t
|
|||||||
// 自动获取
|
// 自动获取
|
||||||
if (assignee.assigneeType === 'auto') {
|
if (assignee.assigneeType === 'auto') {
|
||||||
if(assignee.quickAssignee === 'starter') {
|
if(assignee.quickAssignee === 'starter') {
|
||||||
updateStartAssignee();
|
updateAssignee();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateCandidates();
|
updateAssignee();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -134,10 +134,12 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
|
|||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report/save/code/{formCode}/version/{formVersion}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report/save/code/{formCode}/version/{formVersion}");
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "api/oa-form-report/save/definition-id/{processDefinitionId}/code/{formCode}/version/{formVersion}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "api/oa-form-report/save/definition-id/{processDefinitionId}/code/{formCode}/version/{formVersion}");
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else {
|
} else {
|
||||||
throw new ParamsException("表单类型错误");
|
throw new ParamsException("表单类型错误");
|
||||||
}
|
}
|
||||||
@ -159,12 +161,14 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
|
|||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report/save/code/{formCode}/version/{formVersion}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report/save/code/{formCode}/version/{formVersion}");
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
||||||
model.put(ISystemConstant.FORM_INIT_URL, "api/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
model.put(ISystemConstant.FORM_INIT_URL, "api/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "api/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}/uid/{uid}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "api/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else {
|
} else {
|
||||||
throw new ParamsException("表单类型错误");
|
throw new ParamsException("表单类型错误");
|
||||||
}
|
}
|
||||||
@ -184,10 +188,12 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
|
|||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_INIT_URL, "api/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
model.put(ISystemConstant.FORM_INIT_URL, "api/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_INIT_URL, "api/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
model.put(ISystemConstant.FORM_INIT_URL, "api/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else {
|
} else {
|
||||||
throw new ParamsException("表单类型错误");
|
throw new ParamsException("表单类型错误");
|
||||||
}
|
}
|
||||||
@ -206,10 +212,12 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
|
|||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "app/form-report/save/code/{formCode}/version/{formVersion}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "app/form-report/save/code/{formCode}/version/{formVersion}");
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "app/oa-form-report/save/definition-id/{processDefinitionId}/code/{formCode}/version/{formVersion}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "app/oa-form-report/save/definition-id/{processDefinitionId}/code/{formCode}/version/{formVersion}");
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else {
|
} else {
|
||||||
throw new ParamsException("表单类型错误");
|
throw new ParamsException("表单类型错误");
|
||||||
}
|
}
|
||||||
@ -231,12 +239,14 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
|
|||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "app/form-report/save/code/{formCode}/version/{formVersion}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "app/form-report/save/code/{formCode}/version/{formVersion}");
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
||||||
model.put(ISystemConstant.FORM_INIT_URL, "app/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
model.put(ISystemConstant.FORM_INIT_URL, "app/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_COMMIT_URL, "app/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}/uid/{uid}");
|
model.put(ISystemConstant.FORM_COMMIT_URL, "app/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else {
|
} else {
|
||||||
throw new ParamsException("表单类型错误");
|
throw new ParamsException("表单类型错误");
|
||||||
}
|
}
|
||||||
@ -257,9 +267,11 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
|
|||||||
model.put(ISystemConstant.FORM_INIT_URL, "app/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
model.put(ISystemConstant.FORM_INIT_URL, "app/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
model.put(ISystemConstant.FORM_INIT_URL, "app/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
model.put(ISystemConstant.FORM_INIT_URL, "app/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}");
|
||||||
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
|
||||||
|
model.put(ISystemConstant.FORM_TYPE, formType);
|
||||||
} else {
|
} else {
|
||||||
throw new ParamsException("表单类型错误");
|
throw new ParamsException("表单类型错误");
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
.form-report-foot {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
/* 上传图片 */
|
/* 上传图片 */
|
||||||
.form-upload-image {
|
.form-upload-image {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -492,19 +492,28 @@ function FormUtil(layui, viewer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 选择用户列表
|
* @callback onConfirm
|
||||||
* @param selectType 类型:单选(radio)、多选(checkbox)
|
* @param selectedUsers {Array} [{userId: '', userName: '', userUsername: ''}]
|
||||||
* @param callback 回调,参数: [{userId: '', userUsername: '', userName: ''}]
|
|
||||||
* @param users 要选择的用户数组,格式: [{userId: '', userUsername: '', userName: ''}]
|
|
||||||
* @param selectedUserIds 已经选择的用户ID数组,格式:['userId1', 'userId2']
|
|
||||||
*/
|
*/
|
||||||
this.selectUsers = function (selectType, callback, users, selectedUserIds) {
|
/**
|
||||||
|
* @description 选择用户列表
|
||||||
|
* @param opt {object}
|
||||||
|
* @param {String} opt.selectType 'radio|checkbox' 必传,2选1
|
||||||
|
* @param {onConfirm} opt.onConfirm 确定按钮回调函数,必传
|
||||||
|
* @param {Array} opt.users 参与选择的用户列表,必传,格式:[{userId: '', userUsername: '', userName: ''}]
|
||||||
|
* @param {Array} opt.selectedUserIds 默认选中的用户ID列表,非必传,如果selectType为 radio,默认选中[0]。格式:['userId1', 'userId2']
|
||||||
|
*/
|
||||||
|
this.selectUsers = function (opt) {
|
||||||
|
var selectType = opt.selectType,
|
||||||
|
onConfirm = opt.onConfirm,
|
||||||
|
users = opt.users,
|
||||||
|
selectedUserIds = opt.selectedUserIds;
|
||||||
if (selectType != 'radio' && selectType != 'checkbox') {
|
if (selectType != 'radio' && selectType != 'checkbox') {
|
||||||
throw 'selectType(arg1): [radio|checkbox]';
|
throw 'selectType(arg1): [radio|checkbox]';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!users && !(users instanceof Array)) {
|
if (!users && !(users instanceof Array)) {
|
||||||
callback([]);
|
onConfirm([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedUserIds = selectedUserIds && (selectedUserIds instanceof Array) ? selectedUserIds : [];
|
selectedUserIds = selectedUserIds && (selectedUserIds instanceof Array) ? selectedUserIds : [];
|
||||||
@ -556,6 +565,7 @@ function FormUtil(layui, viewer) {
|
|||||||
layer.close(layIndex);
|
layer.close(layIndex);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加用户到map
|
// 添加用户到map
|
||||||
for (var i = 0, user; user = users[i++];) {
|
for (var i = 0, user; user = users[i++];) {
|
||||||
var isActive = false;
|
var isActive = false;
|
||||||
@ -566,7 +576,7 @@ function FormUtil(layui, viewer) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
itemHtml += '<div class="item' + (isActive ? ' active' : '') + '" data-user-id="' + user.userId + '" data-user-username="' + user.userUsername + '" data-userName="' + user.userName + '">';
|
itemHtml += '<div class="item' + (isActive ? ' active' : '') + '" data-user-id="' + user.userId + '" data-user-username="' + user.userUsername + '" data-user-name="' + user.userName + '">';
|
||||||
itemHtml += '<div class="avatar">';
|
itemHtml += '<div class="avatar">';
|
||||||
if (user.avatar) {
|
if (user.avatar) {
|
||||||
itemHtml += '<img src="route/file/download/true/' + user.avatar + '"/>';
|
itemHtml += '<img src="route/file/download/true/' + user.avatar + '"/>';
|
||||||
@ -603,11 +613,39 @@ function FormUtil(layui, viewer) {
|
|||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>',
|
'</div>',
|
||||||
end: function () {
|
end: function () {
|
||||||
callback(selectedUsers);
|
onConfirm(selectedUsers);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
addClick();
|
addClick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 禁止字段操作
|
||||||
|
* @param fields {Array} [{fieldName:'', isEditable: 0|1}]
|
||||||
|
*/
|
||||||
|
this.disableFields = function (fields) {
|
||||||
|
for (var i = 0, item; item = fields[i++];) {
|
||||||
|
if (parseInt(item.isEditable) === 0) {
|
||||||
|
var boxId = '#' + item.fieldName + 'Box';
|
||||||
|
$(boxId).css('position', 'relative');
|
||||||
|
$(boxId).append('<div style="width: 100%; height: 100%; background-color: #fff0; position: absolute; top: 0; left: 0; cursor: not-allowed;"></div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 隐藏字段操作
|
||||||
|
* @param fields {Array} [{fieldName:'', isVisible: 0|1}]
|
||||||
|
*/
|
||||||
|
this.hideFields = function (fields) {
|
||||||
|
for (var i = 0, item; item = fields[i++];) {
|
||||||
|
if (parseInt(item.isVisible) === 0) {
|
||||||
|
var boxId = '#' + item.fieldName + 'Box';
|
||||||
|
$(boxId).hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -24,10 +24,17 @@
|
|||||||
</#list>
|
</#list>
|
||||||
<div class="layui-form-item layui-layout-admin">
|
<div class="layui-form-item layui-layout-admin">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
<#if formType == "oa">
|
||||||
|
<div class="layui-footer form-report-foot">
|
||||||
|
<div id="submitBtnGroup" class="layui-btn-group"></div>
|
||||||
|
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
<div class="layui-footer" style="left: 0;">
|
<div class="layui-footer" style="left: 0;">
|
||||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||||
</div>
|
</div>
|
||||||
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -54,6 +61,22 @@
|
|||||||
var queryParams = restAjax.params(window.location.href);
|
var queryParams = restAjax.params(window.location.href);
|
||||||
var token = queryParams.token;
|
var token = queryParams.token;
|
||||||
var formUtil = new FormUtil(layui, Viewer);
|
var formUtil = new FormUtil(layui, Viewer);
|
||||||
|
<#if formType == "oa">
|
||||||
|
// 调试可先设置为空对象
|
||||||
|
var confirmAssignees = ${r"${confirmAssignees}"};
|
||||||
|
var fields = ${r"${fields}"};
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
function initSubmitBtns() {
|
||||||
|
var btnColor = ['', 'layui-btn-normal', 'layui-btn-warm'];
|
||||||
|
var btns = '';
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
btns += '<button type="button" id="submitFormBtn'+ i +'" class="layui-btn layui-btn-sm '+ btnColor[(i - 1) % 3] +' confirm-btn" lay-submit lay-filter="submit'+ i +'" data-select-type="'+ item.nodeType +'" data-index="'+ (i - 1) +'" data-next-end-event="'+ item.nextEndEvent +'" data-btn-exc="'+ item.btnExc +'">'+ item.btnText +'</button>'
|
||||||
|
}
|
||||||
|
$('#submitBtnGroup').append(btns);
|
||||||
|
}
|
||||||
|
</#if>
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
function initData() {
|
function initData() {
|
||||||
@ -77,6 +100,11 @@
|
|||||||
});
|
});
|
||||||
</#if>
|
</#if>
|
||||||
</#list>
|
</#list>
|
||||||
|
<#if formType == "oa">
|
||||||
|
initSubmitBtns();
|
||||||
|
formUtil.hideFields(fields);
|
||||||
|
formUtil.disableFields(fields);
|
||||||
|
</#if>
|
||||||
}
|
}
|
||||||
initData();
|
initData();
|
||||||
|
|
||||||
@ -86,6 +114,83 @@
|
|||||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
// 初始化按钮
|
||||||
|
(function() {
|
||||||
|
function confirmForm(formData) {
|
||||||
|
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||||
|
layer.close(confirmLayerIndex);
|
||||||
|
|
||||||
|
// 提交前处理
|
||||||
|
formUtil.clearUploadField(formData);
|
||||||
|
|
||||||
|
var loadLayerIndex;
|
||||||
|
restAjax.post(restAjax.path('${commitUrl}', [
|
||||||
|
<#list commitParams as commitParam>
|
||||||
|
$('#${commitParam}').val(),
|
||||||
|
</#list>
|
||||||
|
]), formData.field, {
|
||||||
|
headers: {
|
||||||
|
token: token
|
||||||
|
}
|
||||||
|
}, function (code, data) {
|
||||||
|
// 这里手动添加操作成功后的操作',
|
||||||
|
}, function (code, data) {
|
||||||
|
$('.confirm-btn').show();
|
||||||
|
layer.msg(data.msg);
|
||||||
|
}, function () {
|
||||||
|
$('.confirm-btn').hide();
|
||||||
|
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||||
|
}, function () {
|
||||||
|
layer.close(loadLayerIndex);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
// 提交表单
|
||||||
|
form.on('submit(submit'+ i +')', function (formData) {
|
||||||
|
var dataset = formData.elem.dataset;
|
||||||
|
var btnText = formData.elem.innerText;
|
||||||
|
var confirmMsg = '确定 '+ btnText +'?';
|
||||||
|
var index = dataset.index;
|
||||||
|
var isNextEndEvent = dataset.nextEndEvent;
|
||||||
|
var selectType = dataset.selectType === 'normal' ? 'radio' : 'checkbox';
|
||||||
|
var btnExc = dataset.btnExc ? dataset.btnExc : '';
|
||||||
|
|
||||||
|
formData.field.selectType = selectType;
|
||||||
|
formData.field.isNextEndEvent = isNextEndEvent;
|
||||||
|
formData.field.exc = btnExc;
|
||||||
|
// 代理人列表为空时,直接提交
|
||||||
|
if(confirmAssignees[index].assignees.length == 0) {
|
||||||
|
formData.field.assignees = [];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(confirmAssignees[index].assignees.length == 1) {
|
||||||
|
formData.field.assignees = [confirmAssignees[index].assignees[0].userId];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
formUtil.selectUsers({
|
||||||
|
selectType: selectType,
|
||||||
|
users: confirmAssignees[index].assignees,
|
||||||
|
selectedUserIds: [],
|
||||||
|
onConfirm: function(selectedUsers) {
|
||||||
|
var assignees = [];
|
||||||
|
for(var j = 0, jItem; jItem = selectedUsers[j++];) {
|
||||||
|
assignees.push(jItem.userId);
|
||||||
|
}
|
||||||
|
formData.field.assignees = assignees;
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
<#else>
|
||||||
// 提交表单
|
// 提交表单
|
||||||
form.on('submit(submitForm)', function (formData) {
|
form.on('submit(submitForm)', function (formData) {
|
||||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||||
@ -124,6 +229,7 @@
|
|||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
</#if>
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
@ -24,9 +24,15 @@
|
|||||||
</#list>
|
</#list>
|
||||||
<div class="layui-form-item layui-layout-admin">
|
<div class="layui-form-item layui-layout-admin">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
<#if formType == "oa">
|
||||||
|
<div class="layui-footer form-report-foot">
|
||||||
|
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
<div class="layui-footer" style="left: 0;">
|
<div class="layui-footer" style="left: 0;">
|
||||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||||
</div>
|
</div>
|
||||||
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -24,10 +24,17 @@
|
|||||||
</#list>
|
</#list>
|
||||||
<div class="layui-form-item layui-layout-admin">
|
<div class="layui-form-item layui-layout-admin">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
<#if formType == "oa">
|
||||||
|
<div class="layui-footer form-report-foot">
|
||||||
|
<div id="submitBtnGroup" class="layui-btn-group"></div>
|
||||||
|
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
<div class="layui-footer" style="left: 0;">
|
<div class="layui-footer" style="left: 0;">
|
||||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||||
</div>
|
</div>
|
||||||
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -55,6 +62,22 @@
|
|||||||
var token = queryParams.token;
|
var token = queryParams.token;
|
||||||
var uid = queryParams.uid;
|
var uid = queryParams.uid;
|
||||||
var formUtil = new FormUtil(layui, Viewer);
|
var formUtil = new FormUtil(layui, Viewer);
|
||||||
|
<#if formType == "oa">
|
||||||
|
// 调试可先设置为空对象
|
||||||
|
var confirmAssignees = ${r"${confirmAssignees}"};
|
||||||
|
var fields = ${r"${fields}"};
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
function initSubmitBtns() {
|
||||||
|
var btnColor = ['', 'layui-btn-normal', 'layui-btn-warm'];
|
||||||
|
var btns = '';
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
btns += '<button type="button" id="submitFormBtn'+ i +'" class="layui-btn layui-btn-sm '+ btnColor[(i - 1) % 3] +' confirm-btn" lay-submit lay-filter="submit'+ i +'" data-select-type="'+ item.nodeType +'" data-index="'+ (i - 1) +'" data-next-end-event="'+ item.nextEndEvent +'" data-btn-exc="'+ item.btnExc +'">'+ item.btnText +'</button>'
|
||||||
|
}
|
||||||
|
$('#submitBtnGroup').append(btns);
|
||||||
|
}
|
||||||
|
</#if>
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
function initData() {
|
function initData() {
|
||||||
@ -100,6 +123,11 @@
|
|||||||
</#list>
|
</#list>
|
||||||
|
|
||||||
form.render(null, 'dataForm');
|
form.render(null, 'dataForm');
|
||||||
|
<#if formType == "oa">
|
||||||
|
initSubmitBtns();
|
||||||
|
formUtil.hideFields(fields);
|
||||||
|
formUtil.disableFields(fields);
|
||||||
|
</#if>
|
||||||
}, function(code, data) {
|
}, function(code, data) {
|
||||||
top.dialog.msg(data.msg);
|
top.dialog.msg(data.msg);
|
||||||
}, function() {
|
}, function() {
|
||||||
@ -116,6 +144,84 @@
|
|||||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
(function() {
|
||||||
|
function confirmForm(formData, confirmMsg) {
|
||||||
|
confirmMsg = confirmMsg ? confirmMsg : '确定提交吗';
|
||||||
|
layer.confirm(confirmMsg, function(confirmLayerIndex) {
|
||||||
|
layer.close(confirmLayerIndex);
|
||||||
|
|
||||||
|
// 提交前处理
|
||||||
|
formUtil.clearUploadField(formData);
|
||||||
|
|
||||||
|
var loadLayerIndex;
|
||||||
|
restAjax.put(restAjax.path('${commitUrl}', [
|
||||||
|
<#list commitParams as commitParam>
|
||||||
|
$('#${commitParam}').val(),
|
||||||
|
</#list>
|
||||||
|
uid
|
||||||
|
]), formData.field, {
|
||||||
|
headers: {
|
||||||
|
token: token
|
||||||
|
}
|
||||||
|
}, function (code, data) {
|
||||||
|
// 这里手动添加操作成功后的操作',
|
||||||
|
}, function (code, data) {
|
||||||
|
$('#confirm-btn').show();
|
||||||
|
layer.msg(data.msg);
|
||||||
|
}, function () {
|
||||||
|
$('#confirm-btn').hide();
|
||||||
|
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||||
|
}, function () {
|
||||||
|
layer.close(loadLayerIndex);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
// 提交表单
|
||||||
|
form.on('submit(submit'+ i +')', function (formData) {
|
||||||
|
var dataset = formData.elem.dataset;
|
||||||
|
var btnText = formData.elem.innerText;
|
||||||
|
var confirmMsg = '确定 '+ btnText +'?';
|
||||||
|
var index = dataset.index;
|
||||||
|
var isNextEndEvent = dataset.nextEndEvent;
|
||||||
|
var selectType = dataset.selectType === 'normal' ? 'radio' : 'checkbox';
|
||||||
|
var btnExc = dataset.btnExc ? dataset.btnExc : '';
|
||||||
|
|
||||||
|
formData.field.selectType = selectType;
|
||||||
|
formData.field.isNextEndEvent = isNextEndEvent;
|
||||||
|
formData.field.exc = btnExc;
|
||||||
|
// 代理人列表为空时,直接提交
|
||||||
|
if(confirmAssignees[index].assignees.length == 0) {
|
||||||
|
formData.field.assignees = [];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(confirmAssignees[index].assignees.length == 1) {
|
||||||
|
formData.field.assignees = [confirmAssignees[index].assignees[0].userId];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
formUtil.selectUsers({
|
||||||
|
selectType: selectType,
|
||||||
|
users: confirmAssignees[index].assignees,
|
||||||
|
selectedUserIds: [],
|
||||||
|
onConfirm: function(selectedUsers) {
|
||||||
|
var assignees = [];
|
||||||
|
for(var j = 0, jItem; jItem = selectedUsers[j++];) {
|
||||||
|
assignees.push(jItem.userId);
|
||||||
|
}
|
||||||
|
formData.field.assignees = assignees;
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
<#else>
|
||||||
// 提交表单
|
// 提交表单
|
||||||
form.on('submit(submitForm)', function (formData) {
|
form.on('submit(submitForm)', function (formData) {
|
||||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||||
@ -135,7 +241,8 @@
|
|||||||
restAjax.put(restAjax.path('${commitUrl}', [
|
restAjax.put(restAjax.path('${commitUrl}', [
|
||||||
<#list commitParams as commitParam>
|
<#list commitParams as commitParam>
|
||||||
$('#${commitParam}').val(),
|
$('#${commitParam}').val(),
|
||||||
</#list>
|
</#list>,
|
||||||
|
uid
|
||||||
]), formData.field, {
|
]), formData.field, {
|
||||||
headers: {
|
headers: {
|
||||||
token: token
|
token: token
|
||||||
@ -154,6 +261,7 @@
|
|||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
</#if>
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
@ -24,10 +24,17 @@
|
|||||||
</#list>
|
</#list>
|
||||||
<div class="layui-form-item layui-layout-admin">
|
<div class="layui-form-item layui-layout-admin">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
<#if formType == "oa">
|
||||||
|
<div class="layui-footer form-report-foot">
|
||||||
|
<div id="submitBtnGroup" class="layui-btn-group"></div>
|
||||||
|
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
<div class="layui-footer" style="left: 0;">
|
<div class="layui-footer" style="left: 0;">
|
||||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||||
</div>
|
</div>
|
||||||
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -52,6 +59,22 @@
|
|||||||
var laydate = layui.laydate;
|
var laydate = layui.laydate;
|
||||||
var restAjax = layui.restajax;
|
var restAjax = layui.restajax;
|
||||||
var formUtil = new FormUtil(layui, Viewer);
|
var formUtil = new FormUtil(layui, Viewer);
|
||||||
|
<#if formType == "oa">
|
||||||
|
// 调试可先设置为空对象
|
||||||
|
var confirmAssignees = ${r"${confirmAssignees}"};
|
||||||
|
var fields = ${r"${fields}"};
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
function initSubmitBtns() {
|
||||||
|
var btnColor = ['', 'layui-btn-normal', 'layui-btn-warm'];
|
||||||
|
var btns = '';
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
btns += '<button type="button" id="submitFormBtn'+ i +'" class="layui-btn layui-btn-sm '+ btnColor[(i - 1) % 3] +' confirm-btn" lay-submit lay-filter="submit'+ i +'" data-select-type="'+ item.nodeType +'" data-index="'+ (i - 1) +'" data-next-end-event="'+ item.nextEndEvent +'" data-btn-exc="'+ item.btnExc +'">'+ item.btnText +'</button>'
|
||||||
|
}
|
||||||
|
$('#submitBtnGroup').append(btns);
|
||||||
|
}
|
||||||
|
</#if>
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
function initData() {
|
function initData() {
|
||||||
@ -75,6 +98,11 @@
|
|||||||
});
|
});
|
||||||
</#if>
|
</#if>
|
||||||
</#list>
|
</#list>
|
||||||
|
<#if formType == "oa">
|
||||||
|
initSubmitBtns();
|
||||||
|
formUtil.hideFields(fields);
|
||||||
|
formUtil.disableFields(fields);
|
||||||
|
</#if>
|
||||||
}
|
}
|
||||||
initData();
|
initData();
|
||||||
|
|
||||||
@ -84,6 +112,79 @@
|
|||||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
// 初始化按钮
|
||||||
|
(function() {
|
||||||
|
function confirmForm(formData) {
|
||||||
|
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||||
|
layer.close(confirmLayerIndex);
|
||||||
|
|
||||||
|
// 提交前处理
|
||||||
|
formUtil.clearUploadField(formData);
|
||||||
|
|
||||||
|
var loadLayerIndex;
|
||||||
|
restAjax.post(restAjax.path('${commitUrl}', [
|
||||||
|
<#list commitParams as commitParam>
|
||||||
|
$('#${commitParam}').val(),
|
||||||
|
</#list>
|
||||||
|
]), formData.field, null, function (code, data) {
|
||||||
|
// 这里手动添加操作成功后的操作',
|
||||||
|
}, function (code, data) {
|
||||||
|
$('.confirm-btn').show();
|
||||||
|
layer.msg(data.msg);
|
||||||
|
}, function () {
|
||||||
|
$('.confirm-btn').hide();
|
||||||
|
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||||
|
}, function () {
|
||||||
|
layer.close(loadLayerIndex);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
// 提交表单
|
||||||
|
form.on('submit(submit'+ i +')', function (formData) {
|
||||||
|
var dataset = formData.elem.dataset;
|
||||||
|
var btnText = formData.elem.innerText;
|
||||||
|
var confirmMsg = '确定 '+ btnText +'?';
|
||||||
|
var index = dataset.index;
|
||||||
|
var isNextEndEvent = dataset.nextEndEvent;
|
||||||
|
var selectType = dataset.selectType === 'normal' ? 'radio' : 'checkbox';
|
||||||
|
var btnExc = dataset.btnExc ? dataset.btnExc : '';
|
||||||
|
|
||||||
|
formData.field.selectType = selectType;
|
||||||
|
formData.field.isNextEndEvent = isNextEndEvent;
|
||||||
|
formData.field.exc = btnExc;
|
||||||
|
// 代理人列表为空时,直接提交
|
||||||
|
if(confirmAssignees[index].assignees.length == 0) {
|
||||||
|
formData.field.assignees = [];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(confirmAssignees[index].assignees.length == 1) {
|
||||||
|
formData.field.assignees = [confirmAssignees[index].assignees[0].userId];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
formUtil.selectUsers({
|
||||||
|
selectType: selectType,
|
||||||
|
users: confirmAssignees[index].assignees,
|
||||||
|
selectedUserIds: [],
|
||||||
|
onConfirm: function(selectedUsers) {
|
||||||
|
var assignees = [];
|
||||||
|
for(var j = 0, jItem; jItem = selectedUsers[j++];) {
|
||||||
|
assignees.push(jItem.userId);
|
||||||
|
}
|
||||||
|
formData.field.assignees = assignees;
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
<#else>
|
||||||
// 提交表单
|
// 提交表单
|
||||||
form.on('submit(submitForm)', function (formData) {
|
form.on('submit(submitForm)', function (formData) {
|
||||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||||
@ -118,6 +219,8 @@
|
|||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
</#if>
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
@ -24,9 +24,15 @@
|
|||||||
</#list>
|
</#list>
|
||||||
<div class="layui-form-item layui-layout-admin">
|
<div class="layui-form-item layui-layout-admin">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
<#if formType == "oa">
|
||||||
|
<div class="layui-footer form-report-foot">
|
||||||
|
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
<div class="layui-footer" style="left: 0;">
|
<div class="layui-footer" style="left: 0;">
|
||||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||||
</div>
|
</div>
|
||||||
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -24,10 +24,17 @@
|
|||||||
</#list>
|
</#list>
|
||||||
<div class="layui-form-item layui-layout-admin">
|
<div class="layui-form-item layui-layout-admin">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
<#if formType == "oa">
|
||||||
|
<div class="layui-footer form-report-foot">
|
||||||
|
<div id="submitBtnGroup" class="layui-btn-group"></div>
|
||||||
|
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
|
||||||
|
</div>
|
||||||
|
<#else>
|
||||||
<div class="layui-footer" style="left: 0;">
|
<div class="layui-footer" style="left: 0;">
|
||||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||||
</div>
|
</div>
|
||||||
|
</#if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -54,6 +61,22 @@
|
|||||||
var queryParams = restAjax.params(window.location.href);
|
var queryParams = restAjax.params(window.location.href);
|
||||||
var uid = queryParams.uid;
|
var uid = queryParams.uid;
|
||||||
var formUtil = new FormUtil(layui, Viewer);
|
var formUtil = new FormUtil(layui, Viewer);
|
||||||
|
<#if formType == "oa">
|
||||||
|
// 调试可先设置为空对象
|
||||||
|
var confirmAssignees = ${r"${confirmAssignees}"};
|
||||||
|
var fields = ${r"${fields}"};
|
||||||
|
</#if>
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
function initSubmitBtns() {
|
||||||
|
var btnColor = ['', 'layui-btn-normal', 'layui-btn-warm'];
|
||||||
|
var btns = '';
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
btns += '<button type="button" id="submitFormBtn'+ i +'" class="layui-btn layui-btn-sm '+ btnColor[(i - 1) % 3] +' confirm-btn" lay-submit lay-filter="submit'+ i +'" data-select-type="'+ item.nodeType +'" data-index="'+ (i - 1) +'" data-next-end-event="'+ item.nextEndEvent +'" data-btn-exc="'+ item.btnExc +'">'+ item.btnText +'</button>'
|
||||||
|
}
|
||||||
|
$('#submitBtnGroup').append(btns);
|
||||||
|
}
|
||||||
|
</#if>
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
function initData() {
|
function initData() {
|
||||||
@ -95,6 +118,11 @@
|
|||||||
</#list>
|
</#list>
|
||||||
|
|
||||||
form.render(null, 'dataForm');
|
form.render(null, 'dataForm');
|
||||||
|
<#if formType == "oa">
|
||||||
|
initSubmitBtns();
|
||||||
|
formUtil.hideFields(fields);
|
||||||
|
formUtil.disableFields(fields);
|
||||||
|
</#if>
|
||||||
}, function(code, data) {
|
}, function(code, data) {
|
||||||
top.dialog.msg(data.msg);
|
top.dialog.msg(data.msg);
|
||||||
}, function() {
|
}, function() {
|
||||||
@ -111,6 +139,81 @@
|
|||||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
<#if formType == "oa">
|
||||||
|
(function() {
|
||||||
|
function confirmForm(formData, confirmMsg) {
|
||||||
|
confirmMsg = confirmMsg ? confirmMsg : '确定提交吗';
|
||||||
|
layer.confirm(confirmMsg, function(confirmLayerIndex) {
|
||||||
|
layer.close(confirmLayerIndex);
|
||||||
|
|
||||||
|
// 提交前处理
|
||||||
|
formUtil.clearUploadField(formData);
|
||||||
|
|
||||||
|
var loadLayerIndex;
|
||||||
|
restAjax.put(restAjax.path('${commitUrl}', [
|
||||||
|
<#list commitParams as commitParam>
|
||||||
|
$('#${commitParam}').val(),
|
||||||
|
</#list>
|
||||||
|
uid
|
||||||
|
]), formData.field, null, function (code, data) {
|
||||||
|
// 这里手动添加操作成功后的操作',
|
||||||
|
}, function (code, data) {
|
||||||
|
$('#confirm-btn').show();
|
||||||
|
layer.msg(data.msg);
|
||||||
|
}, function () {
|
||||||
|
$('#confirm-btn').hide();
|
||||||
|
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||||
|
}, function () {
|
||||||
|
layer.close(loadLayerIndex);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0, item; item = confirmAssignees[i++];) {
|
||||||
|
// 提交表单
|
||||||
|
form.on('submit(submit'+ i +')', function (formData) {
|
||||||
|
var dataset = formData.elem.dataset;
|
||||||
|
var btnText = formData.elem.innerText;
|
||||||
|
var confirmMsg = '确定 '+ btnText +'?';
|
||||||
|
var index = dataset.index;
|
||||||
|
var isNextEndEvent = dataset.nextEndEvent;
|
||||||
|
var selectType = dataset.selectType === 'normal' ? 'radio' : 'checkbox';
|
||||||
|
var btnExc = dataset.btnExc ? dataset.btnExc : '';
|
||||||
|
|
||||||
|
// 代理人列表为空时,直接提交
|
||||||
|
formData.field.selectType = selectType;
|
||||||
|
formData.field.isNextEndEvent = isNextEndEvent;
|
||||||
|
formData.field.exc = btnExc;
|
||||||
|
if(confirmAssignees[index].assignees.length == 0) {
|
||||||
|
formData.field.assignees = [];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(confirmAssignees[index].assignees.length == 1) {
|
||||||
|
formData.field.assignees = [confirmAssignees[index].assignees[0].userId];
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
formUtil.selectUsers({
|
||||||
|
selectType: selectType,
|
||||||
|
users: confirmAssignees[index].assignees,
|
||||||
|
selectedUserIds: [],
|
||||||
|
onConfirm: function(selectedUsers) {
|
||||||
|
console.log(selectedUsers);
|
||||||
|
var assignees = [];
|
||||||
|
for(var j = 0, jItem; jItem = selectedUsers[j++];) {
|
||||||
|
assignees.push(jItem.userId);
|
||||||
|
}
|
||||||
|
formData.field.assignees = assignees;
|
||||||
|
confirmForm(formData, confirmMsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
<#else>
|
||||||
// 提交表单
|
// 提交表单
|
||||||
form.on('submit(submitForm)', function (formData) {
|
form.on('submit(submitForm)', function (formData) {
|
||||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||||
@ -131,6 +234,7 @@
|
|||||||
<#list commitParams as commitParam>
|
<#list commitParams as commitParam>
|
||||||
$('#${commitParam}').val(),
|
$('#${commitParam}').val(),
|
||||||
</#list>
|
</#list>
|
||||||
|
uid
|
||||||
]), formData.field, null, function (code, data) {
|
]), formData.field, null, function (code, data) {
|
||||||
// 这里手动添加操作成功后的操作',
|
// 这里手动添加操作成功后的操作',
|
||||||
}, function (code, data) {
|
}, function (code, data) {
|
||||||
@ -145,6 +249,7 @@
|
|||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
</#if>
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
Reference in New Issue
Block a user