上篇博客我们写了发布会议

如下:

今天我们写一下我的会议

首先我们要在mysql里面分析一下

我的会议SQL语句的查询

SELECT a.*,b.name, zhuchiren,c.name auditorname FROM t_oa_meeting_info a,
t_oa_user b,
t_oa_user c
where zhuchiren = b.id and a.auditor = c.id;

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

SELECT a.*,b.name zhuchiren,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

-- 1.时间字段要格式化,否则页面会显示一串数字
-- 2.会议状态是数字,前端要显示会议状态描述

MeetingInfoDao:

package com.zking.dao;import java.sql.SQLException;
import java.util.List;
import java.util.Map;import com.zking.entity.MeetingInfo;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;public class MeetingInfoDao extends BaseDao<MeetingInfo>{public int add(MeetingInfo t) throws Exception {String sql = "insert into t_oa_meeting_info(title,content,canyuze,liexize,zhuchiren,location,startTime,endTime,remark) values(?,?,?,?,?,?,?,?,?)";return super.executeUpdate(sql, t, new String[] {"title","content","canyuze","liexize","zhuchiren","location","startTime","endTime","remark"});}//我的会议Sql,后续其他的菜单也会使用private String getSQL() {return "select a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren, b.`name` zhuchirenname,a.location, \r\n" + "DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime, \r\n" + "DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime, \r\n" + "a.state, \r\n" + "( \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" + "       when 7 then '结束会议' \r\n" + "       else '其他' end \r\n" + ") meetingstate, \r\n" + "a.seatPic,a.remark,a.auditor, \r\n" + "c.`name` auditorname 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 meetinginfo, PageBean pageBean)throws SQLException, InstantiationException, IllegalAccessException {String sql = getSQL();//会议标题String title = meetinginfo.getTitle();if(StringUtils.isNotBlank(title)) {sql+=" and title like '%"+title+"%'";}//根据当前登陆用户ID作为主持人字段的条件sql +=" and zhuchiren = "+meetinginfo.getZhuchiren();//按照会议ID降序排序
//      sql+=" order by a.id desc";
//      System.out.println(sql);return super.executeQuery(sql, pageBean);}}

MeetingInfoAction:

package com.zking.web;import java.util.Date;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.ConvertUtils;import com.zking.dao.MeetingInfoDao;
import com.zking.entity.MeetingInfo;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.MyDateConverter;
import com.zking.util.PageBean;
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 infodao = 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>> myInfoss = infodao.myInfos(info, pageBean);//注意:layui中的数据的格式ResponseUtil.writeJson(resp, R.ok(0, "会议数据查询成功",pageBean.getTotal(),myInfoss));} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp,R.error(0, "会议数据查询失败"));} catch (Exception e1) {e1.printStackTrace();}}return null;}//增加public String add(HttpServletRequest req,HttpServletResponse resp) {try {//影响行数int rs = infodao.add(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;}
}

myMeeting.jsp界面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ include file = "/commom/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/myMeeting.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>

meMeeting.js:

let layer,table,$,form;
var 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'){ //会议排座layer.msg('会议排座');} else if(layEvent === 'send'){ //送审layer.msg('送审');} else if(layEvent==="back"){ //反馈详情layer.msg('反馈详情');} else {layer.msg('删除');}});
}

效果图:

把图片映射出来方法

按照resource.properties填上去就可以了

然后再在电脑磁盘按照这个建文件夹就可以了

项目里的图片就可以出来了

其他图片没有出来的原因是电脑没有这个图片

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

  1. 会议OA项目之会议通知会议反馈反馈详情功能

    目录 一.需要的SQL语句 1.1 会议通知查询的SQL 1.2 反馈详情的SQL 二.会议通知的前台代码 2.1 会议通知的jsp文件 2.2 要封装的js文件 三.会议通知查询的后台代码 2.1  ...

  2. 会议OA项目之会议发布(一)

                                                     目录 前言: 会议发布的产品原型图: 1.会议发布 1.1实现的特色功能: 1.2思路: 使用的数据库 ...

  3. 会议OA项目之会议排座功能会议送审的实现

    目录 一.会议排座插件 1.1 插件文件&&jQuery的js文件 1.2 导入js文件 1.3 会议排座的jsp文件 二.初始化参会用户 2.1 编写SQL语句 2.2 编写Dao方 ...

  4. 会议OA之我的会议(查询)

    目录 一.功能介绍 二.我的会议SQL编写 三.我的会议后台 实体类 dao方法 web层 xml配置 js代码 四.我的会议前端 jsp页面 界面展示 五.取消会议 dao方法 web层 js 一. ...

  5. 会议OA项目(三)---我的会议(会议排座、送审)

    目录 前言 一.需求分析 二.准备工作 三.编码 1.后台编码 2.前端编码 四.效果展示 前言 上篇分享了会议OA项目的我的会议功能的查询.取消会议.本篇文章将完善我的会议功能. 我的会议功能有一个 ...

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

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

  7. LayUi会议OA系统之用户管理

    目录 一.后端 二.前端 今天继续跟大家分享LayUi的知识以及实现会议OA系统的用户管理. 涉及到的知识点主要是LayUi的数据表格和弹出层,用来实现用户管理的增删改查. 一.后端 我们以t_oa_ ...

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

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

  9. 会议OA(会议排座送审)

    目录 一,会议排座 二,会议送审 一,会议排座 分析: 1. 查找资料     做选择,哪一个素材更适合完成需求 2. 素材改造     素材的缺陷:         ①:样式:座位小方块重叠/太小 ...

  10. 会议OA之会议排座送审

    目录 最近这段时间一直都在与大家分享会议OA项目,今天继续分享关于会议OA项目的一个亮点功能,会议排座.以及一个送审功能. 一.会议排座 二.送审 最近这段时间一直都在与大家分享会议OA项目,今天继续 ...

最新文章

  1. TVM在ARM GPU上优化移动深度学习
  2. SpringMVC中JSONP的基本使用
  3. USACO Section1.3 Combination Lock 解题报告
  4. ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
  5. kafka不使用自带zk_Kafka监控必备——Kafka-Eagle 2.0.2正式发布
  6. .net core连接MongoDB
  7. 从事python需要掌握哪些知识和技能_零基础想转行从事Python?需要掌握如下技能...
  8. mysql vim 命令_Vim基本命令必知必会
  9. 多线程,并发,异步,死锁
  10. dio设置自定义post请求_基于dio库封装flutter项目的标准网络框架
  11. 《android深入探索》第四章心得
  12. 安装VisualSVN Server时候,端口号冲突
  13. 导出数据到txt文本
  14. 宝马、奔驰、路虎、捷豹、卡宴、杜比音效DTS音乐下载
  15. Office 2016 for mac 打开闪退/出现问题,提示发送错误报告
  16. Recall(召回率), Specificity(特异度),Precision(精确度), Sensitivity(灵敏度)
  17. Apple Pencil 拆解一代 -1212
  18. 封装jquery的方法
  19. 7寸显示器 树莓派4b_基于树莓派4B显示屏分类
  20. 学简单python好学吗_python好学吗语法简单吗举个例子

热门文章

  1. 数据库 级联删除和级联修改
  2. 针对Spring/Gradle启动失败的一些通用解决方案
  3. Mysql、Oracle 添加字段、索引基础语法
  4. 神经网络:CNN、DNN、RNN
  5. 安卓adb获取remount权限
  6. idea之热部署插件jrebel的使用
  7. 一个完整的单例模式代码
  8. js 原生ajax封装
  9. IDEA2022创建Maven项目
  10. 手把手教你如何入门Python3 网络爬虫