目录

一、功能介绍

二、我的会议SQL编写

三、我的会议后台

实体类

dao方法

web层

xml配置

js代码

四、我的会议前端

jsp页面

界面展示

五、取消会议

dao方法

web层

js


一、功能介绍

我的会议:当前登录账号,是 某会议 主持人,则查询出来

所需表:t_oa_meeting_info

二、我的会议SQL编写

--状态:0取消会议 1新建 2待审核 3驳回 4待开 5进行中 6开启投票 7结束会议,默认值为1

最初版查询语句

select a.*,a.auditor,b.`name` zhuchiren,c.`name` auditorname from
t_oa_meeting_info a,
t_oa_user b,
t_oa_user c
where a.zhuchiren=b.id and a.auditor=c.id;

第二版

用户表分析,会议没有审批人也要查询出来,name会议信息表就作为主表,用户表作为从表:用会议信息表左外链接

select a.*,a.auditor,b.`name` zhuchiren,c.`name` auditorname fromt_oa_meeting_info a
inner join t_oa_user b on a.zhuchiren=b.id
left join t_oa_user c on a.auditor=c.id

最终版

1.时间字段要格式化,否则页面会显示一串数字

2.会议状态是数字,前端要显示会议状态描述

select a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren,
b.`name` zhuchirenname,
a.location,
DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,
DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,
a.state,(case a.statewhen 0 then '取消会议'when 1 then '新建'when 2 then '待审核'when 3 then '驳回'when 4 then '待开'when 5 then '进行中'when 6 then '开启投票'when 7 then '结束会议'else '其他' end
) meetingstate,
a.seatPic,a.remark,a.auditor,
c.`name` auditorname from t_oa_meeting_info a
inner join t_oa_user b on a.zhuchiren=b.id
left join t_oa_user c on a.auditor=c.id

三、我的会议后台

实体类

package com.maomao.entity;import java.util.Date;public class MeetingInfo {private Long id;private String title;private String content;private String canyuze;private String liexize;private String zhuchiren;private String location;private Date startTime;private Date endTime;private String fujian;private Integer state;private String seatPic;private String remark;private String auditor;public String getAuditor() {return auditor;}public void setAuditor(String auditor) {this.auditor = auditor;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getCanyuze() {return canyuze;}public void setCanyuze(String canyuze) {this.canyuze = canyuze;}public String getLiexize() {return liexize;}public void setLiexize(String liexize) {this.liexize = liexize;}public String getZhuchiren() {return zhuchiren;}public void setZhuchiren(String zhuchiren) {this.zhuchiren = zhuchiren;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public Date getStartTime() {return startTime;}public void setStartTime(Date startTime) {this.startTime = startTime;}public Date getEndTime() {return endTime;}public void setEndTime(Date endTime) {this.endTime = endTime;}public String getFujian() {return fujian;}public void setFujian(String fujian) {this.fujian = fujian;}public Integer getState() {return state;}public void setState(Integer state) {this.state = state;}public String getSeatPic() {return seatPic;}public void setSeatPic(String seatPic) {this.seatPic = seatPic;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}public MeetingInfo() {super();// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "MeetingInfo [id=" + id + ", title=" + title + ", content=" + content + ", canyuze=" + canyuze+ ", liexize=" + liexize + ", zhuchiren=" + zhuchiren + ", location=" + location + ", startTime="+ startTime + ", endTime=" + endTime + ", fujian=" + fujian + ", state=" + state + ", seatPic=" + seatPic + ", remark=" + remark + "]";}}

dao方法

//通用的会议查询SQL语句,包含会议信息表数据,主持人姓名、审批人姓名、会议状态private String getSQL() {return "SELECT a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren,b.`name`,a.location\r\n" + ",DATE_FORMAT(a.startTime,'%Y-%m-%d %H:%i:%s') as startTime\r\n" + ",DATE_FORMAT(a.endTime,'%Y-%m-%d %H:%i:%s') as endTime\r\n" + ",a.state\r\n" + ",(case a.state\r\n" + "when 0 then '取消会议'\r\n" + "when 1 then '新建'\r\n" + "when 2 then '待审核'\r\n" + "when 3 then '驳回'\r\n" + "when 4 then '待开'\r\n" + "when 5 then '进行中'\r\n" + "when 6 then '开启投票'\r\n" + "else '结束会' end\r\n" + ") as meetingState\r\n" + ",a.seatPic,a.remark,a.auditor,c.`name` as auditorName\r\n" + "FROM t_oa_meeting_info a\r\n" + "inner join t_oa_user b on a.zhuchiren = b.id\r\n" + "left JOIN t_oa_user c on a.auditor = c.id where 1=1 ";}//  我的会议public List<Map<String, Object>> myInfos(MeetingInfo info, PageBean pageBean) throws Exception {String sql = getSQL();String title = info.getTitle();if(StringUtils.isNotBlank(title)) {sql += " and title like '%"+title+"%'";}//根据当前登陆用户ID作为主持人字段的条件sql+=" and zhuchiren="+info.getZhuchiren();//按照会议ID降序排序sql+=" order by a.id desc";System.out.println(sql);return super.executeQuery(sql, pageBean);}//  状态:0取消会议 1新建 2待审核 3驳回 4待开 5进行中 6开启投票 7结束会议,默认值为1public int updatezt(MeetingInfo m) throws Exception {String sql = "update t_oa_meeting_info set state=? where id = ?";return super.executeUpdate(sql, m, new String[] {"state","id"});}

web层

package com.maomao.web;import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.ConvertUtils;import com.maomao.dao.MeetingInfoDao;
import com.maomao.entity.MeetingInfo;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.Base64ImageUtils;
import com.zking.util.MyDateConverter;
import com.zking.util.PageBean;
import com.zking.util.PropertiesUtil;
import com.zking.util.R;
import com.zking.util.ResponseUtil;public class MeetingInfoAction extends ActionSupport implements ModelDriver<MeetingInfo>{private MeetingInfo info = new MeetingInfo();private MeetingInfoDao meetingInfoDao = new MeetingInfoDao();@Overridepublic MeetingInfo getModel() {//方式二:ConvertUtils.register(new MyDateConverter(),Date.class);return info;}// 我的会议public String myInfos(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<Map<String, Object>> infos = meetingInfoDao.myInfos(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;}}

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<config><action path="/user" type="com.maomao.web.UserAction"></action><action path="/permission" type="com.maomao.web.PermissionAction"></action><action path="/info" type="com.maomao.web.MeetingInfoAction"></action>
</config>

js代码

let layer,table,$,form;
let row;
layui.use(['layer','table','jquery','form'],function(){layer=layui.layer,table=layui.table,form=layui.form,$=layui.jquery;initTable();//查询事件$('#btn_search').click(function(){query();});});//1.初始化数据表格
function initTable(){table.render({          //执行渲染elem: '#tb',   //指定原始表格元素选择器(推荐id选择器)height: 400,         //自定义高度loading: false,      //是否显示加载条(默认 true)cols: [[             //设置表头{field: 'id', title: '会议编号', width: 90},{field: 'title', title: '会议标题', width: 120},{field: 'location', title: '会议地点', width: 140},{field: 'startTime', title: '开始时间', width: 120},{field: 'endTime', title: '结束时间', width: 120},{field: 'meetingState', title: '会议状态', width: 120},{field: 'seatPic', title: '会议排座', width: 120,templet: function(d){if(d.seatPic==null || d.seatPic=="")return "尚未排座";elsereturn "<img width='120px' src='"+d.seatPic+"'/>";}},{field: 'auditName', title: '审批人', width: 120},{field: '', title: '操作', width: 200,toolbar:'#tbar'},]]});
}//2.点击查询
function query(){table.reload('tb', {url: $("#ctx").val()+'/info.action',     //请求地址method: 'POST',                    //请求方式,GET或者POSTloading: true,                     //是否显示加载条(默认 true)page: true,                        //是否分页where: {                           //设定异步数据接口的额外参数,任意设'methodName':'myInfos','zhuchiren':$('#zhuchiren').val(),'title':$('#title').val(),},  request: {                         //自定义分页请求参数名pageName: 'page', //页码的参数名称,默认:pagelimitName: 'rows' //每页数据量的参数名,默认:limit},done: function (res, curr, count) {console.log(res);}});//工具条事件table.on('tool(tb)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"row = obj.data; //获得当前行数据var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)var tr = obj.tr; //获得当前行 tr 的 DOM 对象(如果有的话)console.log(row);if(layEvent === 'seat'){ //会议排座} else if(layEvent === 'send'){ //送审} else if(layEvent==="back"){ //反馈详情} else {//删除layer.confirm('确认要删除吗?', {icon: 3, title:'提示'}, function(index){$.post($("#ctx").val()+'/info.action',{'methodName':'updatezt','state':0,'id':row.id},function(rs){if(rs.success){//调用查询方法刷新数据query();}else{layer.msg(rs.msg,function(){});}},'json');layer.close(index);});}});

四、我的会议前端

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.js"></script>
<title>用户管理</title>
</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="zhuchiren" 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="tb" lay-filter="tb" class="layui-table" style="margin-top:-15px"></table>
<!-- 对话框(送审) -->
<div id="audit" style="display:none;"><form style="margin:20px 15px;" class="layui-form layui-form-pane" lay-filter="audit"><div class="layui-inline"><label class="layui-form-label">送审人</label><div class="layui-input-inline"><input type="hidden" id="meetingId" value=""/><select id="auditor" style="poistion:relative;z-index:1000"><option value="">---请选择---</option></select></div><div class="layui-input-inline"><button id="btn_auditor" class="layui-btn">送审</button></div></div></form>
</div>
<!-- 对话框(反馈详情) -->
<div id="feedback" style="display:none;padding:15px;"><fieldset class="layui-elem-field layui-field-title"><legend>参会人员</legend></fieldset><blockquote class="layui-elem-quote" id="meeting_ok"></blockquote><fieldset class="layui-elem-field layui-field-title"><legend>缺席人员</legend></fieldset><blockquote class="layui-elem-quote" id="meeting_no"></blockquote><fieldset class="layui-elem-field layui-field-title"><legend>未读人员</legend></fieldset><blockquote class="layui-elem-quote" id="meeting_noread"></blockquote>
</div>
<script type="text/html" id="tbar">{{#  if(d.state==1 || d.state==3){ }}<a class="layui-btn layui-btn-xs" lay-event="seat">会议排座</a><a class="layui-btn layui-btn-xs" lay-event="send">送审</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>{{#  } }}{{#  if(d.state!=1 && d.state!=2 && d.state!=3){ }}<a class="layui-btn layui-btn-xs" lay-event="back">反馈详情</a>{{#  } }}
</script>
</body>
</html>

界面展示

五、取消会议

这里的删除是取消会议

把状态修改为0

dao方法

//   状态:0取消会议 1新建 2待审核 3驳回 4待开 5进行中 6开启投票 7结束会议,默认值为1public int updatezt(MeetingInfo m) throws Exception {String sql = "update t_oa_meeting_info set state=? where id = ?";return super.executeUpdate(sql, m, new String[] {"state","id"});}

web层

//我的会议:取消会议public String updatezt(HttpServletRequest req, HttpServletResponse resp) {try {int rs = meetingInfoDao.updatezt(info);if (rs > 0) {ResponseUtil.writeJson(resp, R.ok(200, "会议取消成功"));} else {ResponseUtil.writeJson(resp, R.error(0, "会议取消失败"));}} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "会议取消失败"));} catch (Exception e1) {e1.printStackTrace();}}return null;}

js

//工具条事件table.on('tool(tb)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"row = obj.data; //获得当前行数据var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)var tr = obj.tr; //获得当前行 tr 的 DOM 对象(如果有的话)console.log(row);if(layEvent === 'seat'){ //会议排座} else if(layEvent === 'send'){ //送审} else if(layEvent==="back"){ //反馈详情} else {//删除layer.confirm('确认要删除吗?', {icon: 3, title:'提示'}, function(index){$.post($("#ctx").val()+'/info.action',{'methodName':'updatezt','state':0,'id':row.id},function(rs){if(rs.success){//调用查询方法刷新数据query();}else{layer.msg(rs.msg,function(){});}},'json');layer.close(index);});}});

效果展示

会议OA之我的会议(查询)相关推荐

  1. 会议OA项目(待开会议历史会议所有会议)

                                                                    文章目录 一.会议OA项目名词介绍 二.SQL编写 待开会议SQL 所有 ...

  2. 会议OA项目(我的会议中的会议排座送审功能)

    文章目录 一.会议排座插件介绍 1)会议项目为什么要有会议排座的功能 2)完成在页面上元素的拖动功能 2.1分析现有素材的不足 2.2修改现有素材的不足⬇⬇⬇ 2.3 content需要传递到后台,并 ...

  3. 会议OA之我的会议(排座送审)

    目录 一.排座 后台代码 dao方法 web层 js代码 配置文件 前端代码 二.送审 后台代码 dao方法 web层 js代码 一.排座 实现思路 1.查询出本场会议中的所有参与人员 2.需要完成在 ...

  4. 会议OA(待开会议所有会议)

    目录 待开会议: 所有会议 ​编辑 待开和所有会议功能实现 前台 哈喽大家好~~我来啦~~今天给大家分享我们会议0A的最后一期啦!!! 是我们会议的待开会议和我们的所有会议!!! 待开会议: 与我的会 ...

  5. 会议OA之我的会议(会议排座送审)

    目录 前言: 2.我的会议: 2.1实现的特色功能: 2.2思路: 2.3功能实现: 我的会议页面:myMeeting.jsp myMeeting.js Dao方法 在mvc中配置info信息 Mee ...

  6. 会议OA项目之代开会议全部会议

    目录: 一,待开会议SQL编写 二,全部会议SQL编写 三,待开会议功能开发 四,所有会议功能开发 一,待开会议SQL编写 待开会议sql编写其实与我的会议sql大同小异,主要区别在于:待开会议需要匹 ...

  7. 会议OA项目--我的会议

    目录 一.我的会议sql语句编写 二.我的会议后台代码 三.我的会议前台代码 四.异常处理 一.我的会议sql语句编写 >我的会议< select  a.id,a.title,a.cont ...

  8. 会议OA之待开会议所有会议

    目录 一.待开会议 1.SQL语句 2.dao方法 3.web层 4.js代码 5.jsp文件 6.运行效果 二.所有会议 1.SQL语句 2.dao方法 3.web层 4.js代码 5.jsp 6. ...

  9. 会议OA项目(项目原型图介绍发布会议功能)

    目录 一.会议OA项目介绍 为什么要开发OA会议管理 会议OA管理的作用 二.项目原型图介绍 1)会议管理 2)投票管理 3)会议室管理 三.数据库表结构 四.发布会议功能&多功能下拉框 La ...

最新文章

  1. 在计算机视觉方向如何快速提升自己?
  2. Nautilus启动报错
  3. android HOME键的监听
  4. 播放图像有锯齿_反隔行操作
  5. oracle ssh测试不通过,ssh 连接不上 oracle linux 7.2
  6. onclick 调用php,AJAX调用PHP简单应用
  7. 《Redis官方文档》Redis调试指南
  8. libgo 支持mysql,loadrunner通过使用libmysql.dll完成mysql的测试-Go语言中文社区
  9. 【Vue 3.0 新特性(三)】Vite 工具
  10. Servlet之过滤器详解
  11. WIN和LIN环境下对拍程序
  12. 在Matplotlib图中插入LaTex公式
  13. addEventListener:为单个事件注册多个事件事件处理程序
  14. 汇总3种获取水系数据的途径
  15. 吉特仓库管理系统- 斑马打印机 ZPL语言的腐朽和神奇
  16. FACES纳新|2021春纳线上分享会等你来
  17. MATLAB基础应用精讲-【基础知识篇】MATLAB中的标点符号
  18. 苹果一直显示无法连接服务器,苹果6plus无法连接服务器是怎么回事?
  19. 微信小程序开发MAP(地图)
  20. API网易考拉,根据ID取商品详情

热门文章

  1. keras深度学习安装全过程(2021-08-03)
  2. FreeSWITCH背后的故事(译)
  3. 【ES知识】ES基础查询语法一览
  4. 【云服务器 ECS 实战】ECS 快照镜像的原理及用法详解
  5. 【opencv】goodFeaturesToTrack源码分析-2-Shi-Tomasi角点检测
  6. <Android开发> Android vold - 第四篇 vold 的NetlinkHandler类简介
  7. idea重启端口占用问题
  8. 神经网络与深度学习一 :介绍深度学习
  9. Java 中的内存映射(Mmap)
  10. Xmind8 (update8)破解教程