目录
上次与大家分享了会议排座以及会议送审,按照项目流程来,今天与大家分享会议审批。
会议审批包含了会议查询和审批签字两个功能。
会议查询:在我的审批界面,当前用户点击查询,显示的是他还未进行审批的会议数据
审批签字:当审批人浏览完该会议内容后,可以选择驳回或者通过该会议,如果通过该会议则进行签字,驳回则不需要签字。审批签字运用到了在线绘画工具的一个插件以及签字截图功能,类似于ps美化签字图片。在后端运用到了批处理方法,同时处理将被审批的会议新增入库以及修改会议状态的事务,业务处理结果必须保持一致。
一、会议查询
实现思路:由当前登录账号作为审批人字段值,点击查询,显示该账号下还未审批的会议数据
后端:
1.Dao层方法
sql语句2和3分别是查询审批人和查询会议状态的语句
public List<Map<String, Object>> myAudit(MeetingInfo info, PageBean pageBean) throws Exception, Exception, Exception {
String sql = getSQL();
//会议标题查询
String title = info.getTitle();
if(StringUtils.isNotBlank(title)) {
sql += " and title like '%"+title+"%'";
}
//当前登陆账号是会议信息表中的审批人字段值
sql += " and a.auditor = " + info.getAuditor();
//只查询会议状态为2 的 待审核的会议
sql += " and a.state = 2 ";
//排序按照降序展示
sql += " order by a.id desc ";
return super.executeQuery(sql, pageBean);
}
2、Web层
//我的审批
public String myAudit(HttpServletRequest req, HttpServletResponse resp) {
try {
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
List<Map<String, Object>> infos = infoDao.myAudit(info, pageBean);
ResponseUtil.writeJson(resp, R.ok(0, "会议信息查询成功" , pageBean.getTotal(), infos));
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp, R.error(0, "会议信息查询失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
前端:
1、Jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/myAudit.js"></script>
</head>
<style>
body{
margin:15px;
}
.layui-table-cell {height: inherit;}
.layui-layer-page .layui-layer-content { overflow: visible !important;}
</style>
<body>
<!-- 搜索栏 -->
<div class="layui-form-item" style="margin:15px 0px;">
<div class="layui-inline">
<label class="layui-form-label">会议标题</label>
<div class="layui-input-inline">
<input type="hidden" id="auditor" value="${user.id }"/>
<input type="text" id="title" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button id="btn_search" type="button" class="layui-btn"><i class="layui-icon layui-icon-search"></i> 查询</button>
</div>
</div>
<!-- 数据表格 -->
<table id=