OA项目之我的会议(查询&会议排座&送审)(二)

简介: OA项目之我的会议(查询&会议排座&送审)

会议排座

思路

  • 会议排座插件介绍
  • 会议排座功能开发
  • 送审功能开发

MeetingInfoDao.java

//  根据会议ID更新会议的排座图片
  public int updateSeatPicById(MeetingInfo info) throws Exception {
    String sql="update t_oa_meeting_info set seatPic=? where id=?";
    return super.executeUpdate(sql, info, new String[] {"seatPic","id"});
  }
  //  根据会议ID查询相关用户
  public List<User> queryUserByMeetingId(Long meetingId) throws Exception{
    String sql="select * from t_oa_user where FIND_IN_SET(id,"
        + "(select concat(canyuze,',',liexize,',',zhuchiren) "
        + "from t_oa_meeting_info where id="+meetingId+"))";
    return super.executeQuery(sql, User.class, null);
  }

MeetingInfoAction.java

/**
   * 保存排座图片到服务器的指定目录,并更新相关会议信息的排座图片字段
   * @param req
   * @param resp
   */
  public void addArrangeSeat(HttpServletRequest req, HttpServletResponse resp) {
    try {
      String fName = UUID.randomUUID().toString().replace("-", "").concat(".jpg");
      String path = "D:\\temp\\images\\seatPic\\uploads\\" + fName;
      String base64Image = meetinginfo.getSeatPic().replace("data:image/png;base64,", "");
      //生成图片
      Base64ImageUtils.GenerateImage(base64Image, path);
      //更新会议信息表中的排座信息,需要设置tomcat的设置增加一个扩展web模块
      meetinginfo.setSeatPic("/uploads/"+fName);
      service.updateSeatPicById(meetinginfo);
      CommonUtil.sendResponse(0, "排座成功", resp);
    } catch (Exception e) {
      e.printStackTrace();
      CommonUtil.sendResponse(-1, "排座失败", resp);
    }
  }

resource.properties

String path = "D:\\temp\\images\\seatPic\\uploads\\" + fName;

tomcat中需要配置图片映射关系  

myMeeting.js

<script>
let table=null;
let $ = null;
var row = null;
let formSelects = null;
let form = null;
let layer = null;
layui.use(['table','jquery','formSelects','form','layer'], function(){
  table = layui.table;
  $ = layui.jquery;
  formSelects = layui.formSelects;
  form = layui.form;
  layer = layui.layer;
  loadMeetingInfo();
  //查询我的会议信息
  $("#queryMeetingInfo").click(function() {
    loadMeetingInfo();
  });
  //对表格的功能按钮增加事件监听,如排座,送审,反馈按钮
  table.on('tool(meetingInfoTable)', function(obj) {
    //排座
    if(obj.event == 'seat') {
      //对于新建或驳回状态的会议可以执行排座
      if(obj.data.state == 1 || obj.data.state == 3) {
        openSeatPic(obj.data.id);
      } else {
        layer.msg("对于审核通过,结束,取消,进行中等状态的会议不能再执行排座")
      }
    }
    //送审
    if(obj.event == 'send') {
      if(obj.data.seatPic) {
        //对于新建或驳回状态的会议可以送审
        if(obj.data.state == 1 || obj.data.state == 3) {
          openSendAudit(obj.data.id);
        } else {
          layer.msg("对于审核通过,结束,取消,进行中等状态的会议不能执行送审");
        }
      } else {
        layer.msg("未进行排座不能送审");
      }
    }
    //查看反馈
    if(obj.event == 'feedback') {
      openFeedbackInfo(obj.data);
    }
  });
});
function openFeedbackInfo(data) {
  let ignore = [0,1,2,3];
  if(ignore.indexOf(data.state) >= 0) {
    layer.msg("对于新建、驳回、取消、待审状态下的会议,不用查看反馈");
    return;
  }
  debugger;
  layer.open({
        type: 2,                    //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
        title:'反馈详情',
        area: ['600px', '650px'],   //宽高
        skin: 'layui-layer-rim',    //样式类名
        content: ctx+'/jsp/meeting/meetingFeedback.jsp?meetingId=' + data.id,
        btn:['关闭'],
        yes:function(index,layero){
          layer.closeAll();
        }
    });
}
// 打开送审的对话框,执行送审
function openSendAudit(id) {
  let index = layer.open({
        type: 1,  //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
        title: '送审',
        area: ['660px', '200px'],   //宽高
        skin: 'layui-layer-rim',    //样式类名
        content: $("#auditDiv")     //送审对应的div
    });
  //初始化送审人员选择下拉列表的数据
  formSelects.data('auditPerson', 'server', {
      url: ctx + '/meetinginfoAction.action?methodName=listMeetingMember'
  });
  //添加送审按钮的监听事件,发送ajax请求执行送审
  form.on('submit(sendAudit)', function(data) {
    console.log(data);
    data.field["id"] = id;
    console.log(data);
    $.ajax({
      url: ctx + '/meetinginfoAction.action?methodName=sendAudit',
      data: data.field,
      type: 'post',
      dataType: 'json',
      success: function(resp) {
        layer.msg(resp.msg);
        layer.close(index);
        //送审成功,更新我的会议列表
        loadMeetingInfo();
      }
    })
  });
}
//会议排座
function openSeatPic(id) {
    row = null;
    layer.open({
         type: 2,  //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
         title: '会议排座',
         area: ['660px', '350px'],   //宽高
         skin: 'layui-layer-rim',    //样式类名
         content: ctx+'/jsp/meeting/seatPic.jsp?id='+id
    });
};
//查询会议信息
function loadMeetingInfo() {
  table.render({
      elem: '#meetingInfoTable',
      url: ctx + '/meetinginfoAction.action?methodName=listMeetingInfo',
      cols: [[
        {field:'id', width:60, title: 'ID'},
        {field:'title', width:180, title: '会议标题', sort: true},
        {field:'location', width:180, title: '会议地点', sort: true},
        {field:'startTime', width:160, title: '开始时间'},
        {field:'endTime', width:160, title: '结束时间'},
        {field:'meetingState', width:180, title: '会议状态'},
        //显示排座图片
        {field: 'seatPic', title: '会议排座', width: 180,
          templet:function(d){
            if(null==d.seatPic)
              return "尚未排座";
            else
              return "<img height='180px' src='"+d.seatPic+"'/>";
          }
      },
        {field: '', title: '操作', width: 250, toolbar:'#toolbar'}
      ]],
      page: true,
      request: {
        pageName: 'page',
        limitName: 'rows'
      },
      method: 'post',
      where: {
        title: $("#title").val()
      },
      loading: true,
    });
}
</script>
相关文章
|
SQL 存储 JavaScript
Layui之OA会议增删改查
Layui之OA会议增删改查
232 0
|
开发框架 JavaScript 前端开发
J2EE项目部署与发布(Windows版本)->会议OA单体项目Windows部署,spa前后端分离项目Windows部署
J2EE项目部署与发布(Windows版本)->会议OA单体项目Windows部署,spa前后端分离项目Windows部署
210 0
会议OA项目-其它页面->自定义组件应用,其它界面的布局
会议OA项目-其它页面->自定义组件应用,其它界面的布局
196 0
|
容器
会议OA项目-首页->flex弹性布局,轮播图后台数据获取及组件使用(后台数据交互mockjs),首页布局
会议OA项目-首页->flex弹性布局,轮播图后台数据获取及组件使用(后台数据交互mockjs),首页布局
267 0
|
10月前
|
消息中间件 SQL 前端开发
如何开发人事及OA管理系统的考勤管理板块?(附架构图+流程图+代码参考)
考勤系统是企业HR管理的核心模块,涉及打卡、请假、加班、补卡等多项功能,支持多场景打卡方式,并与薪酬、绩效紧密关联。系统需具备数据自动统计、异常提醒、审批流程集成等功能,有效减少人工错误,提升管理效率。
|
10月前
|
存储 缓存 数据库
如何开发人事及OA管理系统的全局基础设置板块?(附架构图+流程图+代码参考)
在企业数字化转型中,人事管理系统(HRM)与办公自动化系统(OA)已成为核心工具。本文详解全局基础设置的三大核心模块:部门岗位基础表、工作日历和工作地点基础表,涵盖功能设计、业务流程、开发技巧与代码示例,助力企业优化系统架构,提升管理效率与扩展性。
|
10月前
|
存储 Java 数据库
如何开发人事及OA管理系统的会议管理板块?(附架构图+流程图+代码参考)
人事及OA系统是现代企业管理的重要工具,整合人力资源与办公流程,提升效率。其会议管理板块可优化会议室预约、冲突检测、审批流程及数据统计,助力企业高效协作。本文详解功能设计、开发技巧与实现方案。
|
10月前
|
JavaScript 安全 前端开发
如何开发人事及OA管理系统的薪酬管理板块?(附架构图+流程图+代码参考)
本文介绍了如何构建一个高效、合规的企业薪酬管理系统,涵盖薪酬模块的重要性、核心功能、系统架构设计、数据模型、开发实现及安全合规要点。内容包括薪酬配置、数据导入、自动化计算、审批发放、工资条生成与安全分发、报表看板、权限审计等关键环节,并提供详细的业务流程、架构图、核心代码示例及落地开发技巧。适用于HR、财务及技术人员快速搭建薪酬管理系统,提升发薪效率,降低人工错误与合规风险。
|
10月前
|
前端开发 BI API
如何开发人事及OA管理系统的入转调离板块?(附架构图+流程图+代码参考)
企业人事及OA系统核心模块“入转调离”(入职、转正、调动、离职)涵盖员工全生命周期管理,涉及审批流、合同管理、岗位变更、社保薪资联动等关键流程。通过系统化设计,实现数据统一、流程可审计、信息可追溯,提升HR效率并增强企业合规性。本文详解模块架构、设计原则、五大子模块实现方案及常见集成点,助力企业搭建高效、可靠的人事管理系统。
|
11月前
如何搭建一套无纸化自动审批OA系统
很多公司使用OA系统仍面临流程混乱、审批缓慢的问题。本文介绍如何快速搭建一套智能无纸化OA系统,解决传统OA流程不畅、系统难用等痛点,助力企业实现高效自动化办公,适合希望提升办公效率的管理者和IT人员参考实践。

热门文章

最新文章