Commit a8c1e2d7 by Java-曹文达

添加审批 待审批 已审批 列表

parent 9a8ed264
...@@ -16,6 +16,7 @@ public class SecurityUser extends User implements UserDetails { ...@@ -16,6 +16,7 @@ public class SecurityUser extends User implements UserDetails {
public SecurityUser(User user) { public SecurityUser(User user) {
if (user != null) { if (user != null) {
this.setId(user.getId());
this.setUserUuid(user.getUserUuid()); this.setUserUuid(user.getUserUuid());
this.setUsername(user.getUsername()); this.setUsername(user.getUsername());
this.setPassword(user.getPassword()); this.setPassword(user.getPassword());
......
package com.bbd.bpm.controller.taskHistory; package com.bbd.bpm.controller.taskHistory;
import com.bbd.bpm.dto.PageUtil;
import com.bbd.bpm.dto.SysCode; import com.bbd.bpm.dto.SysCode;
import com.bbd.bpm.dto.request.PendingTaskListRequest; import com.bbd.bpm.dto.request.PendingTaskListRequest;
import com.bbd.bpm.dto.response.ApprovedDetailBean; import com.bbd.bpm.dto.response.ApprovedDetailBean;
...@@ -7,6 +8,8 @@ import com.bbd.bpm.dto.response.BpmResponse; ...@@ -7,6 +8,8 @@ import com.bbd.bpm.dto.response.BpmResponse;
import com.bbd.bpm.dto.response.CompletedTaskListBean; import com.bbd.bpm.dto.response.CompletedTaskListBean;
import com.bbd.bpm.dto.response.PendingTaskListBean; import com.bbd.bpm.dto.response.PendingTaskListBean;
import com.bbd.bpm.util.validate.ValidateUtil; import com.bbd.bpm.util.validate.ValidateUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.activiti.engine.HistoryService; import org.activiti.engine.HistoryService;
...@@ -88,7 +91,7 @@ public class TaskHistoryController { ...@@ -88,7 +91,7 @@ public class TaskHistoryController {
@ApiOperation(value = "查询已办理任务") @ApiOperation(value = "查询已办理任务")
@PostMapping("/completedTaskList") @PostMapping("/completedTaskList")
public BpmResponse completedTaskList( @RequestBody PendingTaskListRequest req) { public BpmResponse completedTaskList(PendingTaskListRequest req,PageUtil pageUtil) {
BpmResponse resp = new BpmResponse(); BpmResponse resp = new BpmResponse();
try{ try{
//数据校验 //数据校验
...@@ -101,24 +104,36 @@ public class TaskHistoryController { ...@@ -101,24 +104,36 @@ public class TaskHistoryController {
return resp; return resp;
} }
//任务办理人 //任务办理人
List<HistoricTaskInstance> hisList = historyService.createHistoricTaskInstanceQuery().taskAssignee(req.getAssignee()).listPage(req.getPage().getPageNumber(),req.getPage().getPageSize()); PageHelper.startPage(pageUtil.getPageNumber(),pageUtil.getPageSize());
List<HistoricTaskInstance> hisList = historyService.createHistoricTaskInstanceQuery().taskAssignee(req.getAssignee()).listPage(pageUtil.getPageNumber(),pageUtil.getPageSize());
if(hisList!=null && hisList.size()>0){ if(hisList!=null && hisList.size()>0){
List<CompletedTaskListBean> dataList = new ArrayList<>(); List<CompletedTaskListBean> dataList = new ArrayList<>();
for(HistoricTaskInstance hisTask : hisList){ for(HistoricTaskInstance hisTask : hisList){
HistoricProcessInstance pi =historyService.createHistoricProcessInstanceQuery().processInstanceId(hisTask.getProcessInstanceId()).singleResult(); HistoricProcessInstance pi =historyService.createHistoricProcessInstanceQuery().processInstanceId(hisTask.getProcessInstanceId()).singleResult();
CompletedTaskListBean bean = new CompletedTaskListBean(); CompletedTaskListBean bean = new CompletedTaskListBean();
//业务密钥
bean.setBusinessKey(pi.getBusinessKey()); bean.setBusinessKey(pi.getBusinessKey());
//任务发起人
bean.setStartUserId(pi.getStartUserId()); bean.setStartUserId(pi.getStartUserId());
//任务开启时间
bean.setPiStartTime(pi.getStartTime()); bean.setPiStartTime(pi.getStartTime());
//taskId
bean.setTaskId(hisTask.getId()); bean.setTaskId(hisTask.getId());
//流程实例id
bean.setProcessInstanceId(hisTask.getProcessInstanceId()); bean.setProcessInstanceId(hisTask.getProcessInstanceId());
//审批开始时间
bean.setTaskEndTime(hisTask.getEndTime()); bean.setTaskEndTime(hisTask.getEndTime());
//审批结束时间
bean.setTaskStartTime(hisTask.getStartTime()); bean.setTaskStartTime(hisTask.getStartTime());
//流程结束时间
bean.setPiEndTime(pi.getEndTime()); bean.setPiEndTime(pi.getEndTime());
//流程名字
bean.setProcessDefinitionName(pi.getProcessDefinitionName());
dataList.add(bean); dataList.add(bean);
} }
resp.setData(dataList); PageInfo pageInfo=new PageInfo(dataList);
resp.setData(pageInfo);
} }
resp.setSuccess(true); resp.setSuccess(true);
resp.setCode(SysCode.SUCCESS_CODE); resp.setCode(SysCode.SUCCESS_CODE);
......
package com.bbd.bpm.controller.taskOperate; package com.bbd.bpm.controller.taskOperate;
import com.bbd.bpm.dto.PageUtil;
import com.bbd.bpm.dto.SysCode; import com.bbd.bpm.dto.SysCode;
import com.bbd.bpm.dto.request.CompleteTaskRequest; import com.bbd.bpm.dto.request.CompleteTaskRequest;
import com.bbd.bpm.dto.request.PendingTaskListRequest; import com.bbd.bpm.dto.request.PendingTaskListRequest;
...@@ -8,16 +9,21 @@ import com.bbd.bpm.dto.response.BpmResponse; ...@@ -8,16 +9,21 @@ import com.bbd.bpm.dto.response.BpmResponse;
import com.bbd.bpm.dto.response.PendingTaskListBean; import com.bbd.bpm.dto.response.PendingTaskListBean;
import com.bbd.bpm.dto.response.QueryPiByUserIdBean; import com.bbd.bpm.dto.response.QueryPiByUserIdBean;
import com.bbd.bpm.util.validate.ValidateUtil; import com.bbd.bpm.util.validate.ValidateUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.activiti.engine.*; import org.activiti.engine.*;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricProcessInstance;
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.activiti.engine.task.TaskQuery;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -28,7 +34,7 @@ import java.util.Map; ...@@ -28,7 +34,7 @@ import java.util.Map;
/** /**
* Created by houkang on 2019/2/27. * Created by houkang on 2019/2/27.
*/ */
@RestController @Controller
@RequestMapping("/api/bpm/task") @RequestMapping("/api/bpm/task")
@Api(tags = {"任务管理"}) @Api(tags = {"任务管理"})
public class TaskOperateController { public class TaskOperateController {
...@@ -49,7 +55,8 @@ public class TaskOperateController { ...@@ -49,7 +55,8 @@ public class TaskOperateController {
* */ * */
@ApiOperation(value = "查询我发起的流程") @ApiOperation(value = "查询我发起的流程")
@PostMapping("/queryStartedPiByUserId") @PostMapping("/queryStartedPiByUserId")
public BpmResponse queryStartedPiByUserId(@RequestBody QueryStartedPiByUserIdRequest req) { @ResponseBody
public BpmResponse queryStartedPiByUserId(QueryStartedPiByUserIdRequest req,PageUtil pageUtil) {
BpmResponse resp = new BpmResponse(); BpmResponse resp = new BpmResponse();
try{ try{
//数据校验 //数据校验
...@@ -63,32 +70,57 @@ public class TaskOperateController { ...@@ -63,32 +70,57 @@ public class TaskOperateController {
} }
// QueryPiByUserIdBean // QueryPiByUserIdBean
//任务办理人 //任务办理人
List<HistoricProcessInstance> listPi = historyService.createHistoricProcessInstanceQuery().involvedUser(req.getUserId()).listPage(req.getPage().getPageNumber(),req.getPage().getPageSize()); PageHelper.startPage(pageUtil.getPageNumber(),pageUtil.getPageSize());
List<HistoricProcessInstance> listPi = historyService.createHistoricProcessInstanceQuery().involvedUser(req.getUserId()).listPage(pageUtil.getPageNumber(),pageUtil.getPageSize());
if(listPi!=null && !listPi.isEmpty()){ if(listPi!=null && !listPi.isEmpty()){
List<QueryPiByUserIdBean> datalist = new ArrayList<>(); List<QueryPiByUserIdBean> datalist = new ArrayList<>();
for(HistoricProcessInstance hpi:listPi){ for(HistoricProcessInstance hpi:listPi){
List<Task> taskList = taskService.createTaskQuery().processInstanceId(hpi.getId()).list();
QueryPiByUserIdBean bean = new QueryPiByUserIdBean(); QueryPiByUserIdBean bean = new QueryPiByUserIdBean();
//业务密钥
bean.setBusinessKey(hpi.getBusinessKey()); bean.setBusinessKey(hpi.getBusinessKey());
bean.setName(hpi.getName()); //流程名称
bean.setProcessInstanceId(hpi.getSuperProcessInstanceId()); bean.setProcessDefinitionName(hpi.getProcessDefinitionName());
//流程实例id
bean.setProcessInstanceId(hpi.getId());
//开始时间
bean.setStartTime(hpi.getStartTime()); bean.setStartTime(hpi.getStartTime());
//结束时间
bean.setEndTime(hpi.getEndTime()); bean.setEndTime(hpi.getEndTime());
if(hpi.getEndTime()!=null){ if(hpi.getEndTime()!=null){
bean.setEnded(true); bean.setEnded(true);
} }
if("1".equals(req.getTaskStatus())){ if("1".equals(req.getTaskStatus())){
if(bean.isEnded()){ if(bean.isEnded()){
//当前操作人
bean.setName("已审批完成");
bean.setProcessNodeName("审批完成");
datalist.add(bean); datalist.add(bean);
} }
} else if("2".equals(req.getTaskStatus())){ } else if("2".equals(req.getTaskStatus())){
if(!bean.isEnded()){ if(!bean.isEnded()){
for(Task t:taskList){
//当前操作人
bean.setName( t.getAssignee());
bean.setProcessNodeName(t.getName());
}
datalist.add(bean); datalist.add(bean);
} }
}else{ }else{
//当前操作人
bean.setName("已审批完成");
bean.setProcessNodeName("审批完成");
for(Task t:taskList){
//当前操作人
bean.setName( t.getAssignee());
bean.setProcessNodeName(t.getName());
}
datalist.add(bean); datalist.add(bean);
} }
} }
resp.setData(datalist); PageInfo pageInfo=new PageInfo(datalist);
resp.setData(pageInfo);
} }
resp.setCode(SysCode.SUCCESS_CODE); resp.setCode(SysCode.SUCCESS_CODE);
...@@ -108,7 +140,8 @@ public class TaskOperateController { ...@@ -108,7 +140,8 @@ public class TaskOperateController {
@ApiOperation(value = "查询待处理任务") @ApiOperation(value = "查询待处理任务")
@PostMapping("/pendingTaskList") @PostMapping("/pendingTaskList")
public BpmResponse pendingTaskList( @RequestBody PendingTaskListRequest req) { @ResponseBody
public BpmResponse pendingTaskList(PendingTaskListRequest req,PageUtil pageUtil) {
BpmResponse resp = new BpmResponse(); BpmResponse resp = new BpmResponse();
try{ try{
//数据校验 //数据校验
...@@ -121,20 +154,29 @@ public class TaskOperateController { ...@@ -121,20 +154,29 @@ public class TaskOperateController {
return resp; return resp;
} }
//任务办理人 //任务办理人
List<Task> taskList = taskService.createTaskQuery().taskAssignee(req.getAssignee()).listPage(req.getPage().getPageNumber(),req.getPage().getPageSize()); PageHelper.startPage(pageUtil.getPageNumber(),pageUtil.getPageSize());
List<Task> taskList = taskService.createTaskQuery().taskAssignee(req.getAssignee()).listPage(pageUtil.getPageNumber(),pageUtil.getPageSize());
if(taskList!=null && taskList.size()>0){ if(taskList!=null && taskList.size()>0){
List<PendingTaskListBean> dataList = new ArrayList<>(); List<PendingTaskListBean> dataList = new ArrayList<>();
for(Task task : taskList){ for(Task task : taskList){
ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
PendingTaskListBean bean = new PendingTaskListBean(); PendingTaskListBean bean = new PendingTaskListBean();
//业务密钥
bean.setBusinessKey(pi.getBusinessKey()); bean.setBusinessKey(pi.getBusinessKey());
//发起人
bean.setStartUserId(pi.getStartUserId()); bean.setStartUserId(pi.getStartUserId());
//开始时间
bean.setStartTime(pi.getStartTime()); bean.setStartTime(pi.getStartTime());
//流程名称
bean.setName(pi.getProcessDefinitionName());
//任务id
bean.setTaskId(task.getId()); bean.setTaskId(task.getId());
//流程实例id
bean.setProcessInstanceId(task.getProcessInstanceId()); bean.setProcessInstanceId(task.getProcessInstanceId());
dataList.add(bean); dataList.add(bean);
} }
resp.setData(dataList); PageInfo pageInfo=new PageInfo(dataList);
resp.setData(pageInfo);
} }
resp.setSuccess(true); resp.setSuccess(true);
resp.setCode(SysCode.SUCCESS_CODE); resp.setCode(SysCode.SUCCESS_CODE);
...@@ -150,6 +192,7 @@ public class TaskOperateController { ...@@ -150,6 +192,7 @@ public class TaskOperateController {
@ApiOperation(value = "改变任务处理人") @ApiOperation(value = "改变任务处理人")
@GetMapping("/appointTaskTo") @GetMapping("/appointTaskTo")
@ResponseBody
public BpmResponse appointTaskTo(String taskId,String userId) { public BpmResponse appointTaskTo(String taskId,String userId) {
BpmResponse resp = new BpmResponse(); BpmResponse resp = new BpmResponse();
...@@ -185,6 +228,7 @@ public class TaskOperateController { ...@@ -185,6 +228,7 @@ public class TaskOperateController {
@ApiOperation(value = "删除任务") @ApiOperation(value = "删除任务")
@GetMapping("/deleteTask") @GetMapping("/deleteTask")
@ResponseBody
public BpmResponse deleteTask(String taskId) { public BpmResponse deleteTask(String taskId) {
BpmResponse resp = new BpmResponse(); BpmResponse resp = new BpmResponse();
//todo //todo
...@@ -201,7 +245,8 @@ public class TaskOperateController { ...@@ -201,7 +245,8 @@ public class TaskOperateController {
@ApiOperation(value = "任务办理") @ApiOperation(value = "任务办理")
@PostMapping("/completeTask") @PostMapping("/completeTask")
public BpmResponse completeTask(@RequestBody CompleteTaskRequest req ) { @ResponseBody
public BpmResponse completeTask(CompleteTaskRequest req ) {
BpmResponse resp = new BpmResponse(); BpmResponse resp = new BpmResponse();
try{ try{
//数据校验 //数据校验
......
...@@ -16,7 +16,6 @@ import java.util.Date; ...@@ -16,7 +16,6 @@ import java.util.Date;
@Data @Data
public class User { public class User {
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id") @Column(name="id")
private Integer id; private Integer id;
......
package com.bbd.bpm.dto.response; package com.bbd.bpm.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date; import java.util.Date;
/** /**
...@@ -13,16 +15,30 @@ public class CompletedTaskListBean { ...@@ -13,16 +15,30 @@ public class CompletedTaskListBean {
private String startUserId; private String startUserId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date piStartTime; private Date piStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date taskStartTime; private Date taskStartTime;
private String taskId; private String taskId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date taskEndTime; private Date taskEndTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date piEndTime; private Date piEndTime;
private String ProcessDefinitionName;
public String getProcessDefinitionName() {
return ProcessDefinitionName;
}
public void setProcessDefinitionName(String processDefinitionName) {
ProcessDefinitionName = processDefinitionName;
}
public String getBusinessKey() { public String getBusinessKey() {
return businessKey; return businessKey;
} }
......
package com.bbd.bpm.dto.response; package com.bbd.bpm.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date; import java.util.Date;
/** /**
...@@ -13,10 +15,22 @@ public class PendingTaskListBean { ...@@ -13,10 +15,22 @@ public class PendingTaskListBean {
private String startUserId; private String startUserId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime; private Date startTime;
private String taskId; private String taskId;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBusinessKey() { public String getBusinessKey() {
return businessKey; return businessKey;
} }
......
package com.bbd.bpm.dto.response; package com.bbd.bpm.dto.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date; import java.util.Date;
/** /**
...@@ -14,10 +16,16 @@ public class QueryPiByUserIdBean { ...@@ -14,10 +16,16 @@ public class QueryPiByUserIdBean {
private String name; private String name;
private String processNodeName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime; private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime; private Date endTime;
private String processDefinitionName;
private boolean isEnded = false; private boolean isEnded = false;
public String getProcessInstanceId() { public String getProcessInstanceId() {
...@@ -67,4 +75,20 @@ public class QueryPiByUserIdBean { ...@@ -67,4 +75,20 @@ public class QueryPiByUserIdBean {
public void setEndTime(Date endTime) { public void setEndTime(Date endTime) {
this.endTime = endTime; this.endTime = endTime;
} }
public String getProcessDefinitionName() {
return processDefinitionName;
}
public void setProcessDefinitionName(String processDefinitionName) {
this.processDefinitionName = processDefinitionName;
}
public String getProcessNodeName() {
return processNodeName;
}
public void setProcessNodeName(String processNodeName) {
this.processNodeName = processNodeName;
}
} }
...@@ -36,9 +36,9 @@ public class ValidateUtil { ...@@ -36,9 +36,9 @@ public class ValidateUtil {
if(StringUtils.isBlank(req.getTaskStatus()) ){ if(StringUtils.isBlank(req.getTaskStatus()) ){
return "查询类型"+SysCode.NOT_ALLOW_NULL; return "查询类型"+SysCode.NOT_ALLOW_NULL;
} }
if(req.getPage() == null ){ /*if(req.getPage().get == null ){
return "分页信息"+SysCode.NOT_ALLOW_NULL; return "分页信息"+SysCode.NOT_ALLOW_NULL;
} }*/
return null; return null;
} }
...@@ -50,9 +50,9 @@ public class ValidateUtil { ...@@ -50,9 +50,9 @@ public class ValidateUtil {
if(StringUtils.isBlank(req.getAssignee()) ){ if(StringUtils.isBlank(req.getAssignee()) ){
return "任务处理人id"+SysCode.NOT_ALLOW_NULL; return "任务处理人id"+SysCode.NOT_ALLOW_NULL;
} }
if(req.getPage() == null ){ /*if(req.getPage() == null ){
return "分页信息"+SysCode.NOT_ALLOW_NULL; return "分页信息"+SysCode.NOT_ALLOW_NULL;
} }*/
return null; return null;
} }
......
package com.bbd.bpm.web;
import com.bbd.bpm.domain.User;
import io.swagger.models.auth.In;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 用户功能模块管理
* @Author:cwd
* @Description:用户功能模块管理
* @Date: 2019/03/04 22:53
* @Param:
* @return
**/
@Controller
@RequestMapping(value = "/web/bpm/")
public class WebController {
/**
* @Author:cwd
* @Description:我发起的流程
* @Date: 2019/03/04 22:53
* @Param:
* @return
**/
@GetMapping(value = "toInitiatedDeployList")
public String toInitiatedDeployList(ModelMap modelMap){
User user = getUser();
modelMap.addAttribute("userId",user.getId());
return "deployment/initiatedDeployList";
}
/**
* @Author:cwd
* @Description:待我审批的流程
* @Date: 2019/03/04 22:53
* @Param:
* @return
**/
@GetMapping(value = "toAppRoVaDeployList")
public String toAppRoVaDeployList(ModelMap modelMap){
User user = getUser();
modelMap.addAttribute("name",user.getUsername());
return "deployment/approvalDeployList";
}
/**
* @Author:cwd
* @Description:我已经审批的流程
* @Date: 2019/03/04 22:53
* @Param:
* @return
**/
@GetMapping(value = "toCompletedTaskList")
public String toCompletedTaskList(ModelMap modelMap){
User user = getUser();
modelMap.addAttribute("name",user.getUsername());
return "deployment/completedTaskList";
}
/**
* @Author:cwd
* @Description:前往审批
* @Date: 2019/03/04 22:53
* @Param:
* @return
**/
@GetMapping(value = "toAppRoValDeail")
public String toAppRoValDeail(ModelMap modelMap, Integer taskId){
modelMap.addAttribute("taskId",taskId);
return "deployment/approvalDeail";
}
public User getUser() { //为了session从获取用户信息,可以配置如下
User user = new User();
SecurityContext ctx = SecurityContextHolder.getContext();
Authentication auth = ctx.getAuthentication();
if (auth.getPrincipal() instanceof UserDetails){ user = (User) auth.getPrincipal();}
return user;
}
}
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
</div> </div>
<div class="btn-group pull-right" ng-show="!secondaryItems.length"> <div class="btn-group pull-right" ng-show="!secondaryItems.length">
<div class="btn-toolbar pull-right" ng-controller="ToolbarController"> <div class="btn-toolbar pull-right" ng-controller="ToolbarController">
<button title="{{item.title | translate}}" ng-repeat="item in secondaryItems" ng-switch on="item.type" class="btn btn-inverse" ng-class="{'separator': item.type == 'separator'}" <!--<button title="{{item.title | translate}}" ng-repeat="item in secondaryItems" ng-switch on="item.type" class="btn btn-inverse" ng-class="{'separator': item.type == 'separator'}"
ng-disabled="item.type == 'separator'" ng-click="toolbarSecondaryButtonClicked($index)" id="{{item.id}}"> ng-disabled="item.type == 'separator'" ng-click="toolbarSecondaryButtonClicked($index)" id="{{item.id}}">
<i ng-switch-when="button" ng-class="item.cssClass" class="toolbar-button" data-toggle="tooltip" title="{{item.title | translate}}"></i> <i ng-switch-when="button" ng-class="item.cssClass" class="toolbar-button" data-toggle="tooltip" title="{{item.title | translate}}"></i>
<div ng-switch-when="separator" ng-class="item.cssClass"></div> <div ng-switch-when="separator" ng-class="item.cssClass"></div>
</button> </button>-->
</div> </div>
</div> </div>
</div> </div>
......
...@@ -100,7 +100,9 @@ ...@@ -100,7 +100,9 @@
<li class="s_menu_item"><a target="main_frame" href="/web/bpm/user/toOrganization"><span class="nav-icon"><i class="fa fa-table bg-gradient-green text-white"></i></span>组织结构</a></li> <li class="s_menu_item"><a target="main_frame" href="/web/bpm/user/toOrganization"><span class="nav-icon"><i class="fa fa-table bg-gradient-green text-white"></i></span>组织结构</a></li>
<li class="s_menu_item"><a target="main_frame" href="/web/bpm/user/toUserList"><span class="nav-icon"><i class="fa fa-user text-white bg-gradient-perpol"></i></span>用户管理</a></li> <li class="s_menu_item"><a target="main_frame" href="/web/bpm/user/toUserList"><span class="nav-icon"><i class="fa fa-user text-white bg-gradient-perpol"></i></span>用户管理</a></li>
<li class="s_menu_item"><a target="main_frame" href="/swagger-ui.html"><span class="nav-icon"><i class="fa fa-map bg-gradient-blue text-white"></i></span>API 文档</a></li> <li class="s_menu_item"><a target="main_frame" href="/swagger-ui.html"><span class="nav-icon"><i class="fa fa-map bg-gradient-blue text-white"></i></span>API 文档</a></li>
<li class="s_menu_item"><a target="main_frame" href="/web/bpm/toInitiatedDeployList"><span class="nav-icon"><i class="fa fa-qrcode bg-gradient-red text-white"></i></span>我发起的</a></li>
<li class="s_menu_item"><a target="main_frame" href="/web/bpm/toAppRoVaDeployList"><span class="nav-icon"><i class="fa fa-qrcode bg-gradient-red text-white"></i></span>待我审批</a></li>
<li class="s_menu_item"><a target="main_frame" href="/web/bpm/toCompletedTaskList"><span class="nav-icon"><i class="fa fa-qrcode bg-gradient-red text-white"></i></span>我已审批</a></li>
</ul> </ul>
</div> </div>
<div class="mainContentBox"> <div class="mainContentBox">
......
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<meta charset="UTF-8"/>
<title>工作流</title>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all">
</head>
<body class="text-center">
<div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label" style="margin-right: 310px;width: 110px;">请输入审核原因</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" id="comment" style="width: 330px;height: 100px;" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left: 0px;">
<button class="layui-btn" lay-submit="" lay-filter="sys_user_form" id="sys_user_form" onclick="add()" style="background-color: #005ba7;margin-top: 30px">提交</button>
</div>
</div>
</div>
<input type="hidden" id="taskId" th:value="${taskId}">
</body>
</div>
</body>
</html>
<style>
* {
font-family: "微软雅黑";
font-size: 15px;
margin: 0 auto;
}
div{
text-align:center;
padding-top:10px;
}
input,button{
margin-top:10px;
}
.btn{
border-color: #10c8ef;
background-color: #10c8ef;
color: #fff;
}
</style>
<script src="/js/plugins/jquery.min.js"></script>
<script src="/js/plugins/layer/layer.js"></script>
<script>
function add(){
var taskId=$("#taskId").val();
var comment=$("#comment").val();
$.post(
"/api/bpm/task/completeTask",
{
taskId:taskId,
comments:comment
},
function (data) {
if(data.code == 200){
layer.msg('操作成功!', {icon: 1,time:1000});
setTimeout(function (){
parent.location.reload();
},500);
}else{
layer.msg('操作失败!',{icon: 2,time:1000});
}
},"json"
)
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" th:href="@{/css/common/base.css}" />
<link rel="stylesheet" th:href="@{/css/common/page_new.css}" />
<link rel="stylesheet" th:href="@{/js/plugins/bootstrapselect/css/product_list.css}" />
<link rel="stylesheet" th:href="@{/css/layui.css}" media="all">
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<style type="text/css">
.box .search_pro .cx input{
background: #00B983;
width: 100px;
height: 39px;
color:white;
margin-right: 10px;
padding: 10px -1px;
}
.content p span input{
background: #00B983;
color:white;
margin-right: 10px;
padding: 10px 20px;
border:1px solid #EEEEEE;
text-indent: 5px;
}
.layui-table th{
text-align: center;
}
button{
}
body .layui-layer-rim .layui-layer-btn a{
background-color:#005ba7;
color: white;
}
</style>
<body>
<div class="box">
<h2><span></span>我审批的流程列表<button onclick="location.reload()">刷新</button></h2>
<div class="search">
<p class="title">条件查询</p>
<p class="search_pro" style="padding-left: 0px;">
<label class="layui-form-label">流程名称:</label>
<input style="width: 200px" type="text" name="modelName" lay-verify="title" autocomplete="off" placeholder="请输入流程名称" class="layui-input">
<span class="cx">
<button style="background-color: #005ba7;margin-left: 16px;" class="layui-btn" onclick="getBargainProduct()">查询</button>
</span>
</p>
</div>
<div class="content">
<p class="title list_ti"><span>我审批的流程列表</span></p>
<table class="layui-table" lay-size="sm">
<input type="hidden" id="name" th:value="${name}">
</table>
</div>
<div class="footer" style="display: flex;justify-content: space-between;align-items:center;padding:10px 10px;border:1px solid #e4e4e4;font-size:14px;color:#999">
<div style="flex-grow: 1;display: flex;justify-content: flex-end;">
<p style="line-height:33px"><span style="color:#d00" id="pages">0</span>页/<span style="color:#d00" id="total">0</span>条数据</p>
<div class="pagediv" style="clear:both;"></div>
</div>
</div>
</div>
</body>
</html>
<script src="/js/plugins/jquery.min.js"></script>
<script src="/js/plugins/layer/layer.js"></script>
<script src="/js/layui.js"></script>
<script type="text/javascript" src="/js/plugins/page_new.js"></script>
<script type="text/javascript">
var assignee=$("#name").val();
$(function(){
$.post(
"/api/bpm/task/pendingTaskList",
{
assignee:assignee,
pageNumber:0,
pageSize:10,
},
function (data) {
var size=0;
var current=0;
if(data.data!=null){
size = data.data.pages;
if (!data.data.pages){
size = 0;
}
current = data.data.pageNum;
}
/*分页*/
$(".pagediv").createPage({
pageNum: size,//总页码
current: current,//当前页
shownum: 10,//每页显示个数
showPageNum: true, //显示总页数
showToPage: true, //显示跳转页码
backfun: function (page) {
flushHtml(page.current);
}
});
},
'json'
);
flushHtml();
});
function flushHtml(current) {
var pageNum = 0;
if(current){
pageNum = current;
}
$.post(
"/api/bpm/task/pendingTaskList",
{
assignee:assignee,
pageNumber:pageNum,
pageSize:10
},
function (data) {
selectListAll(data.data);
},'json'
);
}
function selectListAll(data) {
var pages = data.pages;
var total = data.total;
data = data.list;
console.log(data)
var content = '';
content += '<thead><tr><th>流程实例Id</th><th>流程名称</th><th style="width: 8%">业务密钥</th><th>流程发起人</th><th style="width: 8%">流程发起时间</th><th style="width: 8%">操作</th></tr></thead>';
if(data!=null){
for (var i in data) {
if(data[i].endTime==null){
data[i].endTime='暂无审批';
}
content += '<tbody><tr>';
content += '<td class="product_name" style="width: 5%;">'+data[i].processInstanceId+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].name+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].businessKey+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].startUserId+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].startTime+'</td>';
content += '<td class="cao_zuo"></span><span onclick="approveDeploy('+data[i].taskId+')">审批</span>' +
'</td></tr></tbody>';
}
$('#pages').text(pages);
$('#total').text(total);
}else{
content+= '<div class="tipImg"><img src="/images/non.png" ><p class="tipNon">暂无数据</p></div>';
$('#pages').text(0);
$('#total').text(0);
}
$('table').html(content);
}
/*条件查询*/
function getBargainProduct() {
var name = $("[name='modelName']").val();
$.post("/api/bpm/model/modelList",
{
pageSize:10,
pageNum:1,
modelName:name
},function (data) {
selectListAll(data.data.data);
var size = data.data.data.pages;
if (!data.data.data.pages){
size = 0;
}
/*分页*/
$(".pagediv").createPage({
pageNum: size,//总页码
current: 1,//当前页
shownum: 10,//每页显示个数
showPageNum: true, //显示总页数
showToPage: true, //显示跳转页码
backfun: function (page) {
flushHtml(page.current);
}
});
},'json')
}
function approveDeploy(taskId){
layer.open({
type: 2,
title:'审批任务',
area: ['420px','310px'],
scrollbar: false,
shadeClose: true, //点击遮罩关闭
content: '/web/bpm/toAppRoValDeail?taskId='+taskId
});
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" th:href="@{/css/common/base.css}" />
<link rel="stylesheet" th:href="@{/css/common/page_new.css}" />
<link rel="stylesheet" th:href="@{/js/plugins/bootstrapselect/css/product_list.css}" />
<link rel="stylesheet" th:href="@{/css/layui.css}" media="all">
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<style type="text/css">
.box .search_pro .cx input{
background: #00B983;
width: 100px;
height: 39px;
color:white;
margin-right: 10px;
padding: 10px -1px;
}
.content p span input{
background: #00B983;
color:white;
margin-right: 10px;
padding: 10px 20px;
border:1px solid #EEEEEE;
text-indent: 5px;
}
.layui-table th{
text-align: center;
}
button{
}
body .layui-layer-rim .layui-layer-btn a{
background-color:#005ba7;
color: white;
}
</style>
<body>
<div class="box">
<h2><span></span>我审批的流程列表<button onclick="location.reload()">刷新</button></h2>
<div class="search">
<p class="title">条件查询</p>
<p class="search_pro" style="padding-left: 0px;">
<label class="layui-form-label">流程名称:</label>
<input style="width: 200px" type="text" name="modelName" lay-verify="title" autocomplete="off" placeholder="请输入流程名称" class="layui-input">
<span class="cx">
<button style="background-color: #005ba7;margin-left: 16px;" class="layui-btn" onclick="getBargainProduct()">查询</button>
</span>
</p>
</div>
<div class="content">
<p class="title list_ti"><span>我审批的流程列表</span></p>
<table class="layui-table" lay-size="sm">
<input type="hidden" id="name" th:value="${name}">
</table>
</div>
<div class="footer" style="display: flex;justify-content: space-between;align-items:center;padding:10px 10px;border:1px solid #e4e4e4;font-size:14px;color:#999">
<div style="flex-grow: 1;display: flex;justify-content: flex-end;">
<p style="line-height:33px"><span style="color:#d00" id="pages">0</span>页/<span style="color:#d00" id="total">0</span>条数据</p>
<div class="pagediv" style="clear:both;"></div>
</div>
</div>
</div>
</body>
</html>
<script src="/js/plugins/jquery.min.js"></script>
<script src="/js/plugins/layer/layer.js"></script>
<script src="/js/layui.js"></script>
<script type="text/javascript" src="/js/plugins/page_new.js"></script>
<script type="text/javascript">
var assignee=$("#name").val();
$(function(){
$.post(
"/api/bpm/history/completedTaskList",
{
assignee:assignee,
pageNumber:0,
pageSize:10,
},
function (data) {
var size=0;
var current=0;
if(data.data!=null){
size = data.data.pages;
if (!data.data.pages){
size = 0;
}
current = data.data.pageNum;
}
/*分页*/
$(".pagediv").createPage({
pageNum: size,//总页码
current: current,//当前页
shownum: 10,//每页显示个数
showPageNum: true, //显示总页数
showToPage: true, //显示跳转页码
backfun: function (page) {
flushHtml(page.current);
}
});
},
'json'
);
flushHtml();
});
function flushHtml(current) {
var pageNum = 0;
if(current){
pageNum = current;
}
$.post(
"/api/bpm/history/completedTaskList",
{
assignee:assignee,
pageNumber:pageNum,
pageSize:10
},
function (data) {
selectListAll(data.data);
},'json'
);
}
function selectListAll(data) {
var pages = data.pages;
var total = data.total;
data = data.list;
console.log(data)
var content = '';
content += '<thead><tr><th>流程实例Id</th><th>流程名称</th><th style="width: 8%">业务密钥</th><th>流程发起人</th><th style="width: 8%">流程发起时间</th><th style="width: 8%">审批开始时间</th><th style="width: 8%">审批结束时间</tr></thead>';
if(data!=null){
for (var i in data) {
content += '<tbody><tr>';
content += '<td class="product_name" style="width: 5%;">'+data[i].processInstanceId+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].processDefinitionName+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].businessKey+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].startUserId+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].piStartTime+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].taskStartTime+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].taskEndTime+'</td>';
content += '</td></tr></tbody>';
}
$('#pages').text(pages);
$('#total').text(total);
}else{
content+= '<div class="tipImg"><img src="/images/non.png" ><p class="tipNon">暂无数据</p></div>';
$('#pages').text(0);
$('#total').text(0);
}
$('table').html(content);
}
/*条件查询*/
function getBargainProduct() {
var name = $("[name='modelName']").val();
$.post("/api/bpm/history/completedTaskList",
{
pageSize:10,
pageNum:1,
modelName:name
},function (data) {
selectListAll(data.data.data);
var size = data.data.data.pages;
if (!data.data.data.pages){
size = 0;
}
/*分页*/
$(".pagediv").createPage({
pageNum: size,//总页码
current: 1,//当前页
shownum: 10,//每页显示个数
showPageNum: true, //显示总页数
showToPage: true, //显示跳转页码
backfun: function (page) {
flushHtml(page.current);
}
});
},'json')
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" th:href="@{/css/common/base.css}" />
<link rel="stylesheet" th:href="@{/css/common/page_new.css}" />
<link rel="stylesheet" th:href="@{/js/plugins/bootstrapselect/css/product_list.css}" />
<link rel="stylesheet" th:href="@{/css/layui.css}" media="all">
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<style type="text/css">
.box .search_pro .cx input{
background: #00B983;
width: 100px;
height: 39px;
color:white;
margin-right: 10px;
padding: 10px -1px;
}
.content p span input{
background: #00B983;
color:white;
margin-right: 10px;
padding: 10px 20px;
border:1px solid #EEEEEE;
text-indent: 5px;
}
.layui-table th{
text-align: center;
}
button{
}
body .layui-layer-rim .layui-layer-btn a{
background-color:#005ba7;
color: white;
}
</style>
<body>
<div class="box">
<h2><span></span>我发起的流程列表<button onclick="location.reload()">刷新</button></h2>
<div class="search">
<p class="title">条件查询</p>
<p class="search_pro" style="padding-left: 0px;">
<label class="layui-form-label">通知方式:</label>
<select name="interest" style=" margin-left: 0px;width: 150px;" lay-filter="aihao" id="taskStatus" class="layui-input-block">
<option value="1">已审批</option>
<option value="2">待审批</option>
<option value="3">全部</option>
</select>
<span class="cx">
<button style="background-color: #005ba7;margin-left: 16px;" class="layui-btn" onclick="getBargainProduct()">查询</button>
</span>
</p>
</div>
<div class="content">
<p class="title list_ti"><span>流程列表</span></p>
<table class="layui-table" lay-size="sm">
<input type="hidden" id="userId" th:value="${userId}">
</table>
</div>
<div class="footer" style="display: flex;justify-content: space-between;align-items:center;padding:10px 10px;border:1px solid #e4e4e4;font-size:14px;color:#999">
<div style="flex-grow: 1;display: flex;justify-content: flex-end;">
<p style="line-height:33px"><span style="color:#d00" id="pages">0</span>页/<span style="color:#d00" id="total">0</span>条数据</p>
<div class="pagediv" style="clear:both;"></div>
</div>
</div>
</div>
</body>
</html>
<script src="/js/plugins/jquery.min.js"></script>
<script src="/js/plugins/layer/layer.js"></script>
<script src="/js/layui.js"></script>
<script type="text/javascript" src="/js/plugins/page_new.js"></script>
<script type="text/javascript">
var userId=$("#userId").val();
$(function(){
$.post(
"/api/bpm/task/queryStartedPiByUserId",
{
userId:userId,
taskStatus:3,
pageNumber:0,
pageSize:10,
},
function (data) {
var size=0;
var current=0;
if(data.data!=null){
size = data.data.pages;
if (!data.data.pages){
size = 0;
}
current = data.data.pageNum;
}
/*分页*/
$(".pagediv").createPage({
pageNum: size,//总页码
current: current,//当前页
shownum: 10,//每页显示个数
showPageNum: true, //显示总页数
showToPage: true, //显示跳转页码
backfun: function (page) {
flushHtml(page.current);
}
});
},
'json'
);
flushHtml();
});
function flushHtml(current,taskStatus) {
if (taskStatus==undefined){
taskStatus=3;
}
var pageNum = 0;
if(current){
pageNum = current;
}
$.post(
"/api/bpm/task/queryStartedPiByUserId",
{
userId:userId,
taskStatus:taskStatus,
pageNumber:pageNum,
pageSize:10
},
function (data) {
selectListAll(data.data);
},'json'
);
}
function selectListAll(data) {
var pages = data.pages;
var total = data.total;
data = data.list;
var content = '';
content += '<thead><tr><th>流程实例Id</th><th>流程名称</th><th style="width: 8%">业务密钥</th><th>当前审批人</th><th style="width: 8%">审批节点名称</th><th style="width: 8%">审批开始时间</th><th style="width: 8%">审批结束时间</th></tr></thead>';
if(data!=null){
for (var i in data) {
if(data[i].endTime==null){
data[i].endTime='暂无审批';
}
content += '<tbody><tr>';
content += '<td class="product_name" style="width: 5%;">'+data[i].processInstanceId+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].processDefinitionName+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].businessKey+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].name+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].processNodeName+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].startTime+'</td>';
content += '<td class="product_name" style="width: 5%;">'+data[i].endTime+'</td>';
content += '</tr></tbody>';
}
$('#pages').text(pages);
$('#total').text(total);
}else{
content+= '<div class="tipImg"><img src="/images/non.png" ><p class="tipNon">暂无数据</p></div>';
$('#pages').text(0);
$('#total').text(0);
}
$('table').html(content);
}
/*条件查询*/
function getBargainProduct() {
var taskStatus = $("#taskStatus").val();
$.post("/api/bpm/task/queryStartedPiByUserId",
{
pageSize:10,
pageNum:1,
userId:userId,
taskStatus:taskStatus
},function (data) {
var size=0;
var current=0;
if(data.data!=null){
size = data.data.pages;
if (!data.data.pages){
size = 0;
}
current = data.data.pageNum;
}
/*分页*/
$(".pagediv").createPage({
pageNum: size,//总页码
current: current,//当前页
shownum: 10,//每页显示个数
showPageNum: true, //显示总页数
showToPage: true, //显示跳转页码
backfun: function (page) {
flushHtml(page.current);
}
});
},'json')
flushHtml(null,taskStatus);
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment