OA系统增加会议

目录

一.前期准备工作

A.建立数据库会议信息类

B.建立增加会议的jsp界面

1.注意事项

2.存储路径图片展示

C.构建JS 

1.构建addmetting.js

 2.导入Layui的formSelects(为了下拉框选择值做准备)

二.实现绑定多功能下拉框dao方法

A.查询所有用户  绑定多功能下拉框(凭借layui的formSelects组件)

1.效果图

 2.实现.查询所有用户  绑定多功能下拉框的dao方法,并且通过juni测试,部署在useaction中

2.1dao方法

2.2juni测试效果

 2.3部署在useraction

B.在界面实现效果通过Javascript

1.实现相对应的区域化

2.将多选下拉框封装在一个方法中

2.1解释说明

三.时间生成

A.效果图

 B.实现流程

1.在layui官网将我们需要的时间日期选择copy到我们的项目中

2.进一步完善,将我们的时间进行截取保存

3.增加会议

3.1dao方法

3.2部署在servelt中

C.最终效果图


一.前期准备工作

A.建立数据库会议信息类

package com.zking.entity;

import java.util.Date;
/**
 * 数据库会议信息
 * @author lzzxq
 *
 */
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
	}

	@Override
	public 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 + "]";
	}
    
}

B.建立增加会议的jsp界面

1.注意事项

当然在构建jsp界面时要注意:jsp存储的路径,避免在运行时出现404


<%@ 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">
<!-- 导入formSelects  css -->
<link rel="stylesheet"
	src="${pageContext.request.contextPath }/static/js/plugins/formSelects/formSelects-v4.css">
<!-- 导入formSelects  js -->
<script type="text/javascript"
	src="${pageContext.request.contextPath }/static/js/plugins/formSelects/formSelects-v4.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/addMeeting.js"></script>
<title>用户管理</title>
</head>
<body>
	<form class="layui-form layui-form-pane">
		<div class="layui-form-item">
			<button id="btn_add" type="submit" class="layui-btn" lay-submit=""
				lay-filter="meeting">立即提交</button>
			<button id="btn_reset" type="reset"
				class="layui-btn layui-btn-primary">重置</button>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">会议标题</label>
			<div class="layui-input-block">
				<input type="text" name="title" lay-verify="required"
					autocomplete="off" placeholder="请输入标题" class="layui-input">
			</div>
		</div>
		<div class="layui-form-item layui-form-text">
			<label class="layui-form-label">会议内容</label>
			<div class="layui-input-block">
				<textarea name="content" lay-verify="required" placeholder="请输入内容"
					class="layui-textarea"></textarea>
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">参与者</label>
			<div class="layui-input-block">
				<select name="canyuze" xm-select="canyuze" lay-verify="required"
					lay-vertype="tips">
					<option value="">---请选择---</option>
				</select>
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">列席者</label>
			<div class="layui-input-block">
				<select name="liexize" xm-select="liexize" lay-verify="required"
					lay-vertype="tips">
					<option value="">---请选择---</option>
				</select>
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">主持人</label>
			<div class="layui-input-block">
				<input type="text" readonly="readonly" name="zhuchirenname"
					value="${user.name }" autocomplete="off" placeholder="请输入标题"
					class="layui-input"> <input type="hidden" name="R"
					value="${user.id }" />
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">会议地点</label>
			<div class="layui-input-block">
				<input type="text" lay-verify="required" name="location"
					autocomplete="off" placeholder="请输入会议地点" class="layui-input">
			</div>
		</div>
		<div class="layui-form-item">
			<label class="layui-form-label">会议时间</label>
			<div class="layui-input-block">
				<input type="text" readonly="readonly" lay-verify="required" id="dt"
					name="dt" autocomplete="off" placeholder="请选择会议时间"
					class="layui-input">
			</div>
		</div>
		<div class="layui-form-item layui-form-text">
			<label class="layui-form-label">备注</label>
			<div class="layui-input-block">
				<textarea name="remark" placeholder="请输入备注" class="layui-textarea"></textarea>
			</div>
		</div>
	</form>
</body>
</html>

界面图片

 

 

2.存储路径图片展示

C.构建JS 

1.构建addmetting.js

 2.导入Layui的formSelects(为了下拉框选择值做准备)

当然我们的这个js和css选择 v4版本的,然后要下载的话直接在layui的官网实施下载即可,

然后再导入我们的addmeeting.中

 

当然在导入我们需要的资源时,要注意先后顺序,不然也会出现404的错误

二.实现绑定多功能下拉框dao方法

A.查询所有用户  绑定多功能下拉框(凭借layui的formSelects组件

1.效果图

 2.实现.查询所有用户  绑定多功能下拉框的dao方法,并且通过juni测试,部署在useaction中

2.1dao方法

//查询所有用户  绑定多功能下拉框
	public List<Map<String, Object>> queryUserAll(User user, PageBean pageBean) throws Exception {
		String sql ="select  id  as   value ,name  from t_oa_user";
		return super.executeQuery(sql, pageBean);
	}

2.2juni测试效果

 2.3部署在useraction

B.在界面实现效果通过Javascript

1.实现相对应的区域化

let form, layer, $, formSelects, laydate;
layui.use([ 'form', 'layer', 'jquery', 'laydate' ], function() {
	form = layui.form, layer = layui.layer, $ = layui.jquery,
			laydate = layui.laydate,
			// 非模块化处理方式
			formSelects = layui.formSelects;

// 初始化多选下拉框
	initForm()


});

2.将多选下拉框封装在一个方法中

// 初始化多选下拉框
function initForm() {
	// 绑定多功能下拉框
	formSelects.btns('canyuze', [ 'select', 'remove', 'reverse' ]);
	formSelects.btns('liexize', [ 'select', 'remove', 'reverse' ]);

	$.getJSON("user.action", {
		methodName : "queryUserAll"
	}, function(rs) {
		console.log(rs);
		// local模式
		formSelects.data('canyuze', 'local', {
			arr : rs.data
		});
		formSelects.data('liexize', 'local', {
			arr : rs.data
		});
	});
}

2.1解释说明

在其中的,formSelects.btn是通过ayui的官网copy,然后进行修改,将我们所需要的属性定义在划线地方

 其次我们在通过Json发送请求,将我们之前通过的dao方法查询的数据传输过来,并且保存在rs中 打印效果图如下

 然后在通过local模式,将我们需要的属性名,通过键值对的方法遍历出来,最后就是我们前面展示的效果图了!


三.时间生成

A.效果图

 B.实现流程

1.在layui官网将我们需要的时间日期选择copy到我们的项目中

let form, layer, $, formSelects, laydate;
layui.use([ 'form', 'layer', 'jquery', 'laydate' ], function() {
	form = layui.form, layer = layui.layer, $ = layui.jquery,
			laydate = layui.laydate,
			// 非模块化处理方式
			formSelects = layui.formSelects;

	// 会议时间组件初始化
	laydate.render({
		elem : '#dt',
		type : 'datetime',
		range : '至'
	});
	// 初始化多选下拉框
	initForm();

});

在其中的elem是小编定义的一个id属性的,其他的不需要修改!

2.进一步完善,将我们的时间进行截取保存

orm.on('submit(meeting)', function(data) {
		// 将原有的时间范围进行处理,拿到开始,结束时间,去除空格,放入json对象rs
		let rs = data.field;
		rs['startTime'] = rs.dt.split('至')[0].trim();
		rs['endTime'] = rs.dt.split('至')[1].trim();
		rs['methodName'] = 'add';
		console.log(rs);
		//发生请求
		 $.post('info.action',rs,function(json){	 
			 console.log(rs)
		  if(json.success){
				  layer.msg(json.msg,{icon:6},function(){});
				  $('#btn_reset').click();
			  }else{
				  layer.msg(json.msg,{icon:5},function(){});
			  }
		  },'json');
		return false; // 阻止表单跳转。如果需要表单跳转,去掉这段即可。
	});

这些代码是保存在小编前面的代码里面的,/将原有的时间范围进行处理,拿到开始,结束时间,去除空格,放入json对象rs

 在其中划线的是我们在实体类定义的字段名,并且通过此来保存:add是我们在增加会议是提及发送请求,

3.增加会议

3.1dao方法

// 添加会议信息
		public int add(MeetingInfo info) throws Exception {
			String sql = "insert into t_oa_meeting_info(title,content,canyuze,liexize,zhuchiren,\r\n"
					+ "location,startTime,endTime,remark) values(?,?,?,?,?,?,?,?,?)";
			System.out.println("sql语句:"+sql);
			return super.executeUpdate(sql, info, new String[] { "title", "content", "canyuze", "liexize", "zhuchiren",
					"location", "startTime", "endTime", "remark" });
		}

3.2部署在servelt中

// 增加
	public  String add(HttpServletRequest req, HttpServletResponse resp) {
		try {
			int add = meetingInfoDao.add(info);
			ResponseUtil.writeJson(resp, R.ok(0, "会议信息增加成功"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

C.最终效果图

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/39957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring的创建和使用

文章目录 一、通过Maven创建一个Spring项目准备工作&#xff08;第一次需要配置&#xff09;1.创建一个Maven项目2.引入依赖&#xff08;spring-context、spring-beans&#xff09;3.添加启动类 二、存储Bean对象1.创建一个Bean对象2.把Bean对象存储到Spring中 三、获取Bean对象…

【字节缓冲流】定义与使用

字节缓冲流 1.字节缓冲流 BufferOutputStream&#xff1a;该类实现缓冲输出流。通过设置这样的输出流&#xff0c;应用程序可以向底层输出流写入字节&#xff0c;而不必为写入的每个字节导致底层系统的调用BufferInputStream&#xff1a;创建BufferInputStream将创建一个内部…

最新版本的OpenLens,有两个隐藏技能

最新版本的OpenLens v6.4.15&#xff0c;有两个隐藏技能 1、需要添加扩展插件alebcay/openlens-node-pod-menu&#xff0c;查看pod时才会出现进入命令行的按钮 2、测试环境查看pod、node时可能会出现监控数据未显示&#xff0c;点击集群的Setting&#xff0c;在Metrics里选…

TCP/IP网络编程 第十五章:套接字和标准I/O

标准I/O函数的优点 标准I/O函数的两个优点 将标准I/O函数用于数据通信并非难事。但仅掌握函数使用方法并没有太大意义&#xff0c;至少应该 了解这些函数具有的优点。下面列出的是标准I/O函数的两大优点: □标准I/O函数具有良好的移植性(Portability) □标准I/O函数可以利用缓…

leetcode 542. 01 矩阵

给定一个由 0 和 1 组成的矩阵 mat &#xff0c;请输出一个大小相同的矩阵&#xff0c;其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[0,0,0],[0,1,0],[0,0,0]] 输出&#xff1a;[[0,0,0],…

7个有用的Prompt参数

ChatGPT和Midjournal使得生成式人工智能的应用程序激增。当涉及到生成式AI时&#xff0c;"prompt"通常指的是作为输入给模型的初始提示或指示。它是一个短语、问题、句子或段落&#xff0c;用来引导模型生成相关的响应或文本。 在使用生成式AI模型时&#xff0c;提供…

C++ 数据类型

使用编程语言进行编程时&#xff0c;需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着&#xff0c;当您创建一个变量时&#xff0c;就会在内存中保留一些空间。 您可能需要存储各种数据类型&#xff08;比如字符型、宽字符型、整型、浮点型、双…

Unity3D+Hololens2+MRTK开发

最近项目要用Hololens2开发&#xff0c;公司新买了几套Hololens2设备&#xff0c;边学习边研究下吧。开始也是网上搜教程&#xff0c;但是问题还挺多的&#xff0c;大部分人的设置都不太对&#xff0c;有的是版本问题&#xff0c;走了好多弯路。现在就从零开始学习下Hololens2吧…

Spring【AOP】

AOP-面向切面编程 AOP&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 SpringAop中&#xff0c;通过Advice定义横切逻辑&#xff0c;并支持5种类型的Advice&#xff1a; 导入依赖 <dependency><groupId>…

解决git每次提交都需要输入用户密码

一、背景 在github上贴上了服务器ssh的公钥后&#xff0c;在服务器上推送代码仍旧提示需要输入git的账号和密码。 二、原因 这是因为此时的仓库是http协议下载的&#xff0c;此时的链接并不是通过ssh的&#xff0c;因此在推送代码时&#xff0c;会提示输入git的账号和密码。…

二叉树的右视图

给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 代…

ifconfig不是eth0(eth1/2/3/4其他网卡)的解决办法

1. 编辑你网卡的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0&#xff0c;更改eth0中HWADDR 更改为eth1网卡的信息&#xff08;这里是16位的mac地址&#xff09; 2. 编辑配置文件 vi /etc/udev/rules.d/70-persistent-net.rules 打开该文件&#xff0c;这时你会发现&…

【基于 GitLab 的 CI/CD 实践】02、gitlab-runner 实践

目录 一、gitlab-runner 简介 1.1 要求 1.2 特点 二、GitLab Runner 安装 2.1 使用 GItLab 官方仓库安装 2.2 使用 deb/rpm 软件包 2.3 在容器中运行 GitLab Runner 三、GitLab Runner 注册 3.1 GitLabRunner 类型 3.2 获取 runner token 获取 shared 类型 runner t…

Redis双写一致性?

双写一致性&#xff1a;当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致。 Redis作为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;&#xff08;双写一致性&#xff09; 1.我们当时做排行榜业务时&#xff0c;把历史榜…

RabbitMQ 同样的操作一次成功一次失败

RabbitMQ 是一个功能强大的消息队列系统&#xff0c;广泛应用于分布式系统中。然而&#xff0c;我遇到这样的情况&#xff1a;执行同样的操作&#xff0c;一次成功&#xff0c;一次失败。在本篇博文中&#xff0c;我将探讨这个问题的原因&#xff0c;并提供解决方法。 我是在表…

分布式定时任务组件:XXL-JOB

一、GitHub源码地址 https://github.com/xuxueli/xxl-job 二、部署文档 参考&#xff1a;https://blog.csdn.net/qq798867485/article/details/131415408 三、初始化数据库SQL 1、xxl_job_user XxlJob-用户管理 2、xxl_job_group XxlJob-执行器管理 3、xxl…

AI炒股:用Claude来分析A股2023年中报业绩预告

Claude是和ChatGPT类似的AI大模型&#xff0c;据测试 AI 的水平能力接近 GPT-4&#xff0c;支持高达 100K token 的上下文。Claude只需要到官方网站注册账号后就可以直接免费使用。不过&#xff0c;目前智能美国和英国的 IP 可以注册和使用。 Claude支持上传文档功能&#xff…

基于单片机的蓝牙音乐喷泉的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过HM-18蓝牙音频模块进行无线传输&#xff1b; 通过LM386功放模块对音频信号进行放大&#xff1b;手机端可以直接控制音频播放&#xff0c;并且最远距离可达20米&#xff1b;手机端可以进行任意音乐切换&#xff0c;播报、暂停&a…

Sql构建

Sql构建 SQL 构建对象介绍 之前通过注解开发时&#xff0c;相关 SQL 语句都是直接拼写的&#xff0c;一些关键字写起来比较麻烦、而且容易出错 MyBatis 提供了 org.apache.ibatis.jdbc.SQL 功能类&#xff0c;专门用于构建 SQL 语句 sql拼接测试&#xff1a; public class …

ROS:nodelet

目录 一、前言二、概念三、作用四、使用演示4.1案例简介4.2nodelet 基本使用语法4.3内置案例调用 五、nodelet实现5.1需求5.2流程5.3准备5.4创建插件类并注册插件5.5构建插件库5.6使插件可用于ROS工具链5.6.1配置xml5.6.2导出插件 5.7执行 一、前言 ROS通信是基于Node(节点)的…